一,在C语言中没有字符串这个类型的,对于字符串的定义有两种方式
1, char chs[10] = {'H','e','l','l','0'};
2,char *str = "Hello";
或者 char *str = NULL;
str = "Hello";
二,有如下语句
char *s = "Hello";
*s = "world";
上面的两个语句编译能通过运行吗?
答案是不行.原因有
1,s是一个char*类型的指针,指向了字符串"Hello"第一个字符的地址,s是一个字符指针,而*s指向一个字符,但是将"World"赋值给*s显然是错误的
2,s代表字符串的首元素地址,是一个常量,怎能再次赋值呢
三,有如下两个程序片段
1,char *s = "Hello";
*s = 'N';
2,char chs[10] = {'H','e','l','l','0'};
*chs = 'N';
当对程序进行编译时,1能够通过,2不能通过
原因是:
字符指针引用字符串是字符常量
而字符数组引用是字符串变量
也就是说,字符指针所指向的内容是不变的
字符数组的地址是不变的,但是指向的内容是可变的