gpt4 book ai didi

c 字符指针问题

转载 作者:太空狗 更新时间:2023-10-29 15:12:41 27 4
gpt4 key购买 nike

如果我们声明 char * p="hello"; 那么因为它写在数据段中,我们不能修改 p 指向的内容,但我们可以修改指针本身。但我在 C Traps and Pitfalls 中找到了这个例子安德鲁·科尼格AT&T 贝尔实验室默里山,新泽西州 07974

例子是

char *p, *q;
p = "xyz";
q = p;
q[1] = ’Y’;

q 将指向包含字符串 xYz 的内存。 p 也是,因为 p 和 q 指向相同的内存。

如果我提到的第一个陈述也是真的,那怎么会是真的..同样,我运行了以下代码

main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0') ++*p++;
printf("%s %s",p,p1);
}

得到的输出为ibj!gsjfoet

请解释在这两种情况下我们如何修改内容?提前致谢

最佳答案

您的同一个示例导致我的系统出现段错误。

你在这里遇到了未定义的行为。 .data(注意字符串文字也可能在 .text 中)不一定是不可变的——不能保证机器会写保护该内存(通过页表) ),取决于操作系统和编译器。

关于c 字符指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com