gpt4 book ai didi

c - 指向 C 中结构混淆的指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:26 25 4
gpt4 key购买 nike

我写了一些不想工作的代码,经过深思熟虑后我决定我所有麻烦的原因是一个试图将字符串复制到数组的循环,它是一个结构,由传递给函数的指针指向。这不完全是我的代码,但无论是什么导致它不起作用,也使我的代码不起作用:

typedef struct {
int A[100];
} thing;

这有点像我正在使用的结构。

然后在主函数中:

thing *s;
int i;
for (i=0;i<5;i++) {
s->A[i]=i;
}

所以,这行不通。然而,令我沮丧和困惑的是,这确实:

thing *s;
s->A[0]=0;
s->A[1]=1;
s->A[2]=2;
s->A[3]=3;
s->A[4]=4;

对此,我很茫然,也确实花了很多时间为自己寻找解决办法。我知道我在这里遗漏了一些东西,我只希望它不是很明显

最佳答案

这是未定义的行为;该指针后面没有对象——结果可以是任何东西。未定义的行为可能看起来有效,也可能以非常神秘的方式失败。

你可以这样处理:

thing th;
thing* s = &th;
...now 's' points to a 'thing' -- specifically, 'th'.

关于c - 指向 C 中结构混淆的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347397/

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