結構體變量賦值


在android的bootloader源碼目錄中,發現這個文件lk/app/aboot/aboot.c
里面有一個關於結構體的定義,讓我有點不太明白,哪位高手來解惑一下?

struct atag_tcc_entry
{
char output;
char resolution;
};

struct atag_tcc_entry tcc_param = {
.output = 0,
.resolution = 0,
};

我不太明白的是 為什么truct atag_tcc_entry tcc_param 后面要用一個“=”
還有,output前面為什么要用一個 “.” 點(dot),哪位解釋下?

 

“.”是訪問成員的意思。優先級同“()”。 例:"對象.成員" 或者"對象->成員"都是表示訪問對象的某個成員的意思(讀寫成員)。也就是訪問某個成員的變量。這里只是省略不寫了。也可以寫上atag_tcc_entry.output = 0;一樣的。

 

atag_tcc_entry.output = 0;這個你應該寫錯了吧?
應該是 tcc_param.output = 0;吧
謝謝提醒!沒錯。

前面不加點也可以賦值,加 “.”的話可以不考慮賦值順序,比如可以先給resolution賦值,在給output賦值,可以寫成這樣:
struct atag_tcc_entry tcc_param = {
.resolution = 0,
.output = 0,
}
原理就是因為加 “.”就表示在這個結構體中選擇這個變量來賦值,所以可以不考慮結構體中變量的順序
不加"."的話賦值可以直接寫
struct atag_tcc_entry tcc_param = {
0, 0,
}
這樣就必須要按照順序來賦值了

https://zhidao.baidu.com/question/249948221.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM