如何在C中访问全局变量

时间:2014-03-21 05:49:11

标签: c function structure

我正在尝试填充全局变量,但它似乎无法正常工作。这是我的代码。

typedef struct Global_ {

char values[3][40]

}Global_t;
//function file

GBL_PTR = calloc (1, sizeof (Global_t));
memset(GBL_PTR.values,'\0',sizeof(GBL_PTR.values));

//opening a file and reading it

sscanf(linebuf, "List of values %s , %s \n",
               GBL_PTR.values[0],
               GBL_PTR.values[1]);
printf("Why dont i see these logs %s",GBM_PTR.values[1]);

我没有看到任何崩溃,只是没有日志。编译好。我是C的新手,有人能让我知道我在这里失踪了什么。主要思想是从我的函数中访问一个全局变量。我该怎么做?

2 个答案:

答案 0 :(得分:1)

你忘记了GBL_PTR的类型,它应该是:

Global_t *GBL_PTR = calloc(1, sizeof (Global_t));

GBL_PTR是一个指针,因此在任何地方都使用->运算符而不是.运算符。

GBL_PTR->values
GBL_PTR->values[0]

等...

答案 1 :(得分:1)

你的代码有些错误, (1)在char values[3][40]

之后你错过了一个分号

(2)calloc的返回类型为void*,因此请使用Global_t* GBL_PTR = (Global_t*)calloc (1, sizeof (Global_t));

(3)因为GBL_PTR的类型是指针,所以您可以像valuesGBL_PTR->values一样访问(*GBL_PTR)values

typedef struct Global_ {

    char values[3][40];

}Global_t;
//function file

Global_t* GBL_PTR = (Global_t*)calloc (1, sizeof (Global_t));
memset(&(GBL_PTR->values),'\0',sizeof(GBL_PTR->values));

//opening a file and reading it
char* linebuf= "List of values wang , yang \n";
sscanf(linebuf, "List of values %s , %s \n",
    GBL_PTR->values[0],
    GBL_PTR->values[1]);
printf("Why dont i see these logs %s\n", GBL_PTR->values[1]);