#C语言结构体中指针的问题
typedef struct person{ int age; int* num; }person; int a=10; person C={20,&a};//这里有错误
最后一句代码出错,报错expression must have a constant value请问为什么这个属性(int* num)不能这样初始化?
收起
在结构体定义中,可以使用常量表达式初始化成员,但不能使用变量,因为在编译时无法确定变量的值。对于指针类型的成员,初始化时必须为其分配一个内存空间。因此,可以改为以下方式初始化:
person C = {20, NULL}; C.num = &a;
首先将num初始化为NULL,然后再将变量a的地址赋给它。
报告相同问题?