【发布时间】:2015-02-19 03:35:36
【问题描述】:
下面是一个在c中初始化结构成员的程序
struct stack
{
int *a;
int top;
int size;
}s;
void init()
{
const int size =10; /*s.size=10;*/ /*const int s.size=10*/
s.a=(int*)malloc(size*sizeof(int));
s.top=0;
}
int main()
{
init();
printf("Initialization done !\n");
return 0;
}
Q1 :当我写 s.size=10 时,在 init 方法而不是 const int size=10 中,我得到一个错误“size is not declared in scope”,但是我已经在stack struct 中声明了size。我能够以相同的方式初始化top 那么为什么会出错?
Q2:在init 方法中,我得到正确的输出 const int size=10。我很困惑,在这个语句中,我们如何能够在不使用结构变量的情况下访问结构stack 的成员size,不应该是const int s.size=10 吗?
【问题讨论】:
-
请do not cast
malloc()的返回值。 -
编译器抱怨的不是
s.size=10,而是你删除const int size=10时s.a=(int*)malloc(size*sizeof(int));中的size
标签: c struct initialization malloc declaration