c 結構體轉為string c 結構體學習

2021-10-14 00:01:15 字數 2321 閱讀 2146

宣告及使用

#include int main();    struct user;    printf("user size is %lu ", sizeof(struct user));    // user size is 8    struct stu jack;    printf("jack size is %lu ", sizeof(jack));    // jack size is 12    return 0;}
結構體可以存放多種型別的不同資料,提供一種靈活的方式

記憶體對齊的問題

可以看到user的記憶體大小為8位元組,而不是1+2+4= 7, 由於記憶體對齊的問題,這裡以4個位元組對齊

我們看到stu的總大小為12個位元組,而不是4+3+4位元組,這裡跟上面的對齊原理是一致的

賦值取值

#include int main();    struct user;    printf("user size is %lu ", sizeof(struct user));    // user size is 8    struct stu jack;    printf("jack size is %lu ", sizeof(jack));    // jack size is 12    jack.age = 1;    printf("jack age is %d ", jack.age);    // jack age is 1     return 0;}
成員的更新、獲取都通過 . 操作進行

結構體的指標

#include int main();    struct user;    printf("user size is %lu ", sizeof(struct user));    // user size is 8    struct stu jack;    printf("jack size is %lu ", sizeof(jack));    // jack size is 12    jack.age = 1;    printf("jack age is %d ", jack.age);    // jack age is 1    struct user user;    user.age = 1;        // 結構體的指標    struct user *user_pointer;    user_pointer = &user;    printf("userpointer is %p ", user_pointer);    printf("user age is %d ", user_pointer->age);    return 0;}
當我們改變struct的成員順序發現乙個有趣的現象struct user占用記憶體變為了12位元組,之前是8位元組,這是由於成員順序變更導致記憶體對齊時的大小發生變化,char gender要對齊四個位元組,short age 也要對齊四個位元組,由於中間隔著int number 導致無法緊湊存放,因此總記憶體占用變為 4*3 = 12

#include int main();    struct user;    printf("user size is %lu ", sizeof(struct user));    // user size is 12    struct stu jack;    printf("jack size is %lu ", sizeof(jack));    // jack size is 12    jack.age = 1;    printf("jack age is %d ", jack.age);    // jack age is 1    struct user user;    user.gender = 's';    user.age = 1;    user.number = 22;    // 結構體的指標    struct user *user_pointer;    user_pointer = &user;    printf("userpointer is %p ", user_pointer);    printf("user age is %d ", user_pointer->age);    return 0;}

結構體巢狀結構體 C語言結構體

希望今年夏天的遺憾能成為你秋天的驚喜。網易雲熱評 一 結構體概念 可以簡單理解為把不同資料型別放到一起的陣列 二 結構體宣告與初始化 1 先宣告結構體型別再定義變數 2 同時定義變數 3 直接定義結構體型別變數 include include include include struct aiyou...

C 結構體共用體

12 c 中陣列初始化的特點 初始話陣列可以省略等號 初始話內容為空 不可縮窄操作 double people double people int number 不通過,因為浮點到整形為縮窄13 sizeof 計算陣列時候會比strlen 多計算乙個0位元組 14 字串的初始化和賦值,string ...

C語言結構體和結構體排序

結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...