在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
原文地址:https://www.cnblogs.com/braveheart007/p/10504118.html
时间: 2024-10-20 15:38:40