簡體   English   中英

給結構變量賦值

[英]Assigning structure variable a value

當我以這種方式為 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);

}

你不能寫

 s.rollno = 2;

在全球范圍內,作為單獨的聲明。 所有的語句都需要出現在一些可以執行它們的函數中。

但是,您可以在定義時初始化該值,例如

struct student {
    int rollno;
    int marks;
} s = {.rollno = 2};  

您可以在函數作用域之外創建一個全局變量,如下所示:

int a;
int main() {
   a = 5;
}

但是你不能像你那樣設置它。 這是因為運行時和編譯時間之間的差異。 全局變量被創建並設置到內存中,這是在編譯時確定的。 但是像上面a=5這樣a=5代碼是在運行時執行的。 想象一下這種情況:

int a;
a = somestruct.somefunction();

如果沒有運行它的函數,我們如何確定 a 是什么? 在函數范圍之外完成的事情不能在運行時發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM