int
i = 0;
char
w[] =
"hello"
;
w[1] =
's'
;
while
(w[i] !=
'\0'
){
printf
(
"%c\n"
,w[i]);
i++;
}
char *m = "hello";<=>const char*m="hello";
char *m = "hello";
"hello"保存在静态数据区,该数据不能修改.
由指针m指向. 不能通过指针m来修改静态数据区的值.
char w[] = "hello";
"hello"保存在栈空间数组里. 数组名为w, 函数名为数组的首地址.
可以通过w[i]='a', 或*(w+i)='a'的形式来修改数组内容.
字符串“hello”本身就是一个常量字符指针,
而对于指针m,无非就是一个地址的拷贝,也就是“hello”地址的拷贝。
相当于m指向一个字符串常量,字符串常量是不予许改变的!而对于w[]来说就不一样了,
虽然hello本身是常量,不过此时拷贝给w[]的不是地址,而是内容,也就是“hello”,
也就是w本身拥有一个自己的hello副本,可以对其进行想要的合法操作,比如改变等!!