免责声明:我对 C 很陌生。我试图找到答案,但我的 google-fu 惨遭失败,因为我不完全知道我应该用于搜索的术语......
目前,我遇到了一个相当出乎意料的问题,代码int a = 100;
使结构内的整数也改变了值。
从调试器中,我可以看到 a 和 s->pos 都指向同一个值。这是我的代码的净化版本。
typedef struct {
char data[4096];
int start;
int end;
} buffer;
typedef struct {
int * data;
int length;
} data_format;
buffer * create_buffer() {
buffer result;
result.start = -1;
return &result;
}
data_format * method(buffer * s) {
data_format result = (data_format) { malloc(100), 0 };
... // POINT1
int a = 100;
... // POINT2
}
int main(int argc, char **argv) {
buffer * s = create_buffer();
data_format * df = method(s);
}
从调试器中,我可以看到在标有 的行中// POINT1
,a
是 -1;在// POINT2
,两者a
和s->start
现在都是 100。
声明不应该int
在尚未被任何东西使用的内存点中创建一个变量吗?