使用p[i]或者*(p+i)修改字符串中的单个字符

字符串果然是博大精深,初始化字符串有三种方式:

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)的方式进行修改。