示例代码为:

void main()
{
    char stringy[] = "I am so dumb what is wrong with me";
    char *pStringy = stringy;

    pStringy = "please be gentle";

    printf("%s", stringy);
}

输出为:
I am so dumb what is wrong with me

(这可能是最基本的,但我不明白,也找不到问题所在(可能是因为我不知道怎么表达)
我想知道为什么在初始化pStringy之后,pStringy和stringy共享同一个内存地址时,输出不是“请温柔一点”。
相反,对单个值(但不是数组)执行完全相同的操作就像我所期望的那样,并且原始变量中的原始值会发生更改。

最佳答案

指针指向内存的其他部分它们不包含或拥有它们指向的东西。
这是一个绘制不好的MS绘图草图,它描绘了计算机内存的前后线条:

pString = "please be gentle"

c - 分配给字符串的指针为什么不整体上操纵原始字符串?-LMLPHP
希望这能帮你解决问题如您所见,stringy保持不变。

09-25 20:38