c语言中使用数组和指针定义字符串的区别

mac2026-05-15  5

在c语言中定义一个字符串有两种方式

1、使用指针的方式定义字符串

char *s = "hello";

这种方式可以给指针变量s赋予不同的地址,但是s所指向地址中的内容是不会变的。 也就是说指针的指向可以改变。但是所指向的内容是不能改变的。 因此使用指针的方式是不能操作所指向地址中的内容。

char *s = "hello"; s = "world";//这种操作是正确的。只是改变了指针的指向,并没有改变所指向地址中的内容 char *s = "hello"; *s='w';//s[0]='w';改变了指针指向地址的内容,因此运行出错

2、使用字符数组的方式定义字符串

char a[] = "hello";

这种方式数组a只能对应一个内存区域,不能改变a的指向,但是能够改变a所对应的地址中的内容 指针的指向不能发生改变,但是所指地址的内容是可以改变的

char a[] = "hello"; a = "world";//错误;不能改变a的指向 char a[] = "hello"; *a = 'w'; a[1] = 'o';正确;可以通过指针或下标改变所指向地址的内容;
最新回复(0)