gpt4 book ai didi

C: char 指针 & 段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:15 24 4
gpt4 key购买 nike

在接下来的代码中:

char i,*p;
i = 65;
p = &i;
p = (char *) 66;
(*p)++;
printf("%d",p);

我遇到了段错误。我不明白为什么。我有一个指向 char 的指针(在本例中为 char 66=C),然后我将它的值更改为 66 - 到 67。char 的值是否“ protected ”不受此更改的影响?除了 char 之外,其他人也会发生这种情况吗?

我试图理解这件事背后的想法(而不仅仅是修复它)。谢谢。

最佳答案

问题是:

p = (char *) 66;

应该是:

*p = 66;

p 是指向 char 的指针,因此您不能为其分配 66 之类的值。您可以取消引用 p 以便将值分配给指针“看起来”的位置。

如果你想打印p指向的值,你必须像这样再次使用解引用运算符(*):

printf("%d", *p); // prints the value where p points to

如果你想打印指针地址你可以这样做:

printf("%p", p); // prints the address where p points

关于C: char 指针 & 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417053/

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