字符串果然是博大精深,初始化字符串有三种方式:
char *p1[] = "Hello"; char *p2 = "World"; char *p3 = (char *)malloc(3);
这三种方式产生的指针p1、p2、p3本身都位于栈中,这就不多说了,关键是右值的数据是位于哪,其位置直接决定了哪些字符串是可修改单个字符的。
第一种方式中,“Hello”位于栈中,所以可以采用p1[i]或者*(p1+i)来进行单个字符的修改,比如可以p1[4]='s',将"Hello"编程“Hells”。
第二种方式中,“World”位于静态数据区,位于该区的数据是常量不能被修改,所以不论是采用p2[i]还是*(p2+i)都无法单个修改字符串中的字符。
第二种方式中,malloc分配的空间位于“堆”中,可以采用p3[i]或者*(p3+i)的方式进行修改。