当我以这种方式为s.rollno赋值时,它不起作用
#include<stdio.h>
struct student{
int rollno;
int marks;
}s ;
s.rollno = 2;
int main(){
printf("%d",s.rollno);
}
如果我将值分配给main中的s.rollno,则可以使用
#include<stdio.h>
struct student{
int rollno;
int marks;
}s ;
int main(){
s.rollno = 2;
printf("%d",s.rollno);
}
答案 0 :(得分:3)
你不能写
s.rollno = 2;
在全球范围内,作为单独的声明。所有语句都需要出现在某个函数中,这些函数可以执行它们。
但是,您可以在定义时初始化值,例如
struct student{
int rollno;
int marks;
}s = {.rollno=2} ;
答案 1 :(得分:0)
您可以在函数范围之外创建一个全局变量,如下所示:
int a;
int main() {
a = 5;
}
但是你不能像你那样设置它。这是因为运行时和编译时之间的差异。创建全局变量并将其设置为内存,这在编译时确定。但是上面的代码a=5
是在运行时执行的。想象一下这种情况:
int a;
a = somestruct.somefunction();
如果没有运行此功能,我们怎样才能确定它是什么?在函数范围之外完成的事情不能在运行时发生。