C - 无法访问用户功能中的全局变量

时间:2016-04-12 19:37:41

标签: c

任何人都可以告诉用户函数中的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]);
}

3 个答案:

答案 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)而导致错误。