任何人都可以告诉用户函数中的C访问全局变量(在我的例子中它的数组是'used')(在我的例子中它是'checkData')?它c ++类似的代码工作(但我使用'used = new bool [size];'而不是'bool used [size];')
#include <stdio.h>
#define true 1
#define false 0
typedef int bool;
bool *used;
int i;
void checkData(int i);
int main ()
{
int size = 10;
bool used[size];
for (i = 0; i < size; i++)
used[i] = false;
for (i = 0; i < size; i++)
checkData(i);
return 0;
}
void checkData(int i) {
printf("%d - %d\n", i, used[i]);
}
答案 0 :(得分:0)
为什么你认为使用的是数组? 10个成员的int类型数组的语法例如是:
int used[10];
注意:在函数checkdata中,您可以访问使用的int指针而不是数组
答案 1 :(得分:0)
bool used[size];
是main()
中的一个局部变量,它在全局范围内隐藏used
变量名称,因此您的主要功能不会&#34;请参阅&#34; bool* used
。当您访问main中使用的时,您不会访问全局变量bool* used
。您的checkData()
函数访问全局变量,该变量与您在main()
中创建的变量不同。
答案 2 :(得分:0)
变量used
是重复的名称。在main
中,访问了本地used
。但是在checkData
中使用了全局实例,但由于您取消引用NULL
指针(静态变量初始化为0
)而导致错误。