【发布时间】:2021-07-05 16:46:22
【问题描述】:
#include <stdio.h>
#define LENGTH_OF_A_MACRO 5
struct structS{
unsigned int scgsToTrace[LENGTH_OF_A_MACRO];
unsigned int noOfScgsToTrace;
} structS;
int main()
{
unsigned int scgsToTrace[LENGTH_OF_A_MACRO] = {0};
unsigned int noOfScgToTrace = 0;
structS* commonData_p;
noOfScgToTrace = commonData_p->noOfScgsToTrace; //Q1: Compilation Error
for (unsigned int i = 0; i < noOfScgToTrace; i++) //Q2: noOfScgToTrace garbage value?
{
unsigned int scgToTrace = scgsToTrace[i];
...............................
}
return 0;
}
我正在尝试使用指针变量 commonData_p 从 structS 分配 noOfScgsToTrace。 但是我在这里收到一个编译错误,说变量“commonData_p”在此处使用时未初始化,如上面评论附近所述。我应该明确初始化它吗?如何? 我这里有两个问题
问题1:为什么这里说的是未初始化? 问题2:如果将noOfScgToTrace初始化为0,如果没有正确分配,它是否认为该值是for循环中的垃圾值?
非常感谢任何帮助。提前致谢!
【问题讨论】:
-
如果你
typedefine:typedef struct { ... } structS;,我想你会走得更远。否则,名为structS的struct structS实例会妨碍您。commonData_p是未初始化,因此取消引用它具有未定义的行为。 -
@evt 这个指针在哪里 structS* commonData_p;点?
标签: c pointers struct compiler-errors initialization