在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