继初始化成员是在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一个程序:在init
方法,而不是const int size=10
当我写s.size=10
,我得到一个错误“大小未在范围中声明”,但我已经在stack
结构中声明size
结构。我能够以相同的方式初始化top
那么为什么错误?
Q2:在init
方法,我得到正确的输出与const int size=10
。我很困惑,在这个声明中,我们如何能够在不使用结构变量的情况下访问size
struct stack
的成员,不应该是const int s.size=10
?
请[不要投]](http://stackoverflow.com/q/605845/2173917)'malloc()'的返回值。 –
编译器抱怨不是关于's.size = 10',而是关于sa =(int *)的'size' malloc(size * sizeof(int));'当你移除const int size = 10' –