在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';正确;可以通过指针或下标改变所指向地址的内容;