c语言结构体、联合、枚举、字符串

    xiaoxiao2025-03-12  43

    #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> #include <stddef.h> //自定义数据类型:结构体,枚举,联合 //C语言中结构体不能为空 //typedef struct student //{ // int nun; // char name[20]; // int age; //}STU;//<-类型 //struct node //{ // int n; // struct node *next;//确定了大小,指针有四个字节 //}; // //int main(){ // struct student a; // printf("%d\n", sizeof(struct student)); // system("pause"); // return 0; //} //*结构体的内存对齐 //struct s1{ // char c1; // // char c3; // int c2; //}; //struct s2{ // char c1; // int c2; // char c3; //}; //struct s3{ // struct s1 a;// 8 // int c2;// 4 // char c3[15];// 15 //}; //1.第一个成员永远都放在结构体起始位置的0偏移量处 * //2.从第二个成员开始,每个成员都放在某个对齐数的整数倍的偏移量处 * // 某个对齐数:min(成员自身对齐数,默认对齐数) * // VS:8 LINUX gcc:4 //3.结构体的总大小是所有成员对齐数中的最大值的整数倍 //int main(){ // printf("%d\n", offsetof(struct s3, a)); // printf("%d\n", offsetof(struct s3, c2)); // printf("%d\n", offsetof(struct s3, c3)); // printf("%d\n", sizeof(struct s3)); // system("pause"); // return 0; //} //typedef struct student{ // int num; // char name[20]; // char sex; //}STU; //int main(){ // STU a = { 1, "zhangsan", 'f' };//初始化以及赋值 // STU b;//初始化 // b.num = 2;//赋值 // strcpy(b.name, "lisi");//赋值 // b.sex = 'm';//赋值 // STU c; // STU *p = &a;//赋值 // c = { 3, "wangwu", 'm' }; // printf("%d,%s,%c\n", a.num, a.name, a.sex); // printf("%d,%s,%c\n", b.num, b.name, b.sex); // printf("%d,%s,%c\n", c.num, c.name, c.sex); // printf("%d,%s,%c\n", (*p).num, p->name, p->sex); // system("pause"); // return 0; //} //#pragma pack(1) //struct data{ // int a; // char c; //}; //int main(){ // printf("%d\n", offsetof(struct data, a)); // printf("%d\n", offsetof(struct data, c)); // printf("%d\n", sizeof(struct data)); // system("pause"); // return 0; //} //位段的内存分布:以四个字节或者一个字节开辟 // int、 unsigned int 、 signed int // 存在很多不确定的因素 //struct A{ // int a : 2; // int b : 5; // int c : 10; // int d : 30; //}; //int main(){ // printf("%d\n", sizeof(struct A)); // system("pause"); // return 0; //} //枚举:列举 //enum week{Mon=1,Tues,Wed,Thu,Fri,Sat,Sun}; //int main(){ // enum wekk w; // w = Thu; // printf("%d\n", w); // system("pause"); // return 0; //} //联合(共用体):共用同一块空间 //union data{ // int a; // char b; // double c; //}; //union data{ // int i; // char c; //}; //int main(){ // union data d; // d.i = 0x11223344; // d.c = 0x55; // /*printf("%p\n", &(aa.a)); // printf("%p\n", &(aa.b)); // printf("%p\n", &(aa.c));*///三个地址空间,同一个 // printf("%x\n", d.i); // printf("%x\n", d.c); // system("pause"); // return 0; //}
    最新回复(0)