(1)指定初始化(Designated Initializer)实现上有两种方式,一种是通过点号加赋值符号实现,即“.fieldname=value”,另外一种是通过冒号实现,即“fieldname:value”,其中fieldname为指定的结构体成员名称。前一种是C99标准引入的结构体初始化方式,但在C++中,很多编译器并不支持。 //点号+赋值符号structAa={.b =1,....
这种方式称为指定初始化(designated initializer)。下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目: static struct usb_driver usb_storage_driver = { .owner = THIS_MODULE, .name = "usb-storage", .probe = storage_probe, .disconnect = storage_disconnect, .i...
前一种是C99标准引入的结构体初始化方式,但在C++中,很多编译器并不支持。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 //点号+赋值符号structAa={.b=1,.c=2};//冒号structAa={b:1,c:2}; Linux内核喜欢用“.fieldname=value”的方式进行初始化,使用指定初始化,一个明显的优点是成员初始化顺序和...
c #include <stdio.h> #include <string.h> struct Person { int age; int height; char name[50]; }; int main() { // 定义时直接赋值 struct Person p1 = {28, 178, "Alice"}; // 先定义后逐个赋值 struct Person p2; p2.age = 30; p2.height = 180; strcpy(p2.name,...
struct book gift = { .value = 18.90, .author = "Philionna pestle", 0.25}; 这将把值0.25赋给成员value,因为它在结构声明中紧跟在author成员之后。新的值0.25代替了早先的赋值18.90。 有关designated initializer的进一步信息可以参考c99标准的6.7.8节Ininialization。
花括号里可以是不同类型的字面量。后来为了简化写法,也给结构体准备了类似数组一样的designated initializer,即初始化器(随便你怎么称呼吧,比如初始化列表、初始化表达式),所以直接这样写,可能更省事些:typedef struct{ int x; float y[2];}POS;POS pos ={2,{1.5,2.5}};其实,函数参数才是复合字...
struct complex_struct z1; z1 = { 3.0, 4.0 }; Designated Initializer是C99引入的新特性,用于初始化稀疏(Sparse)结构体和稀疏数组很方便。有些时候结构体或数组中只有某一个或某几个成员需要初始化,其它成员都用0初始化即可,用Designated Initializer语法可以针对每个成员做初始化(Memberwise Initialization),很方便...
void designated_initializer(){ int id = 99; stu boy = {.name = "lisi", .id = id}; printf("id = %d, name = %s\n", boy.id, boy.name); } 指向结构体的指针 void pointer_to_struct(){ stu boy = {19, "tom"}; stu* stu_ptr = &boy; printf("id = %d, name = %s\n", ...
struct 381 designated initializer 395 指针malloc操作结构体 405 union 一次只存储一个值 C11匿名联合 408 enum元素是int类型常量 enum赋值延续 410 共享命名空间和区别 412 复杂声明 bit op 424 要得到一个二进制补码的相反数,反转每一位然后加一。
structbooklibrary={ "The Pious Pirate and the Devious Damsel", "Renee Vivotte", 1.95 } C99和C11为结构提供了指定初始化器(designated initializer),其语法与数组的指定初始化器类似。但是,结构的指定初始化器使用点运算符和成员名(而不是方括号和下标)标识特定的元素。例如,只初始化book结构的value成员,可以...