为结构变量赋值

时间:2015-07-02 17:01:35

标签: c++ c struct structure

当我以这种方式为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);

}

2 个答案:

答案 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();

如果没有运行此功能,我们怎样才能确定它是什么?在函数范围之外完成的事情不能在运行时发生。