gpt4 book ai didi

c++文件数组弄乱了我的变量

转载 作者:行者123 更新时间:2023-11-30 00:49:15 26 4
gpt4 key购买 nike

我的程序不断产生段错误。我已将我的代码简化为以下内容:

#include <stdio.h>

void open_file(FILE** file)
{
*file = fopen("test" , "wb");
return;
}


int main ()
{
int Tracks = 1;
FILE* Files;
int i = 1;

Files = new FILE[Tracks + 1];

printf("i = %d\n", i); //i = 1
open_file(&Files + i);

printf("i = %d\n", i); /i = 0
fclose(*(&Files + i)); //Segmentation fault

return 0;
}

我一定是在做一些非常愚蠢的指针错误,但对我来说我的指针算术运算看起来很好......问题是,出于某种神奇的原因,变量 i 将其值更改为 0。有人可以解释一下吗我为什么??

提前致谢!

最佳答案

问题是 operator precedence 之一,其中寻址运算符的优先级高于加法运算符。这意味着你正在做,例如(&Files) + i,相当于(&Files)[i]

关于c++文件数组弄乱了我的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28720932/

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