日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C 语言】结构体相关 的 函数 指针 数组

發(fā)布時(shí)間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C 语言】结构体相关 的 函数 指针 数组 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

.

作者 : 萬境絕塵

轉(zhuǎn)載請(qǐng)注明出處 :?http://www.hanshuliang.com/?post=30

.


結(jié)構(gòu)體概述 : 結(jié)構(gòu)體是 多個(gè) 變量的集合, 變量的類型可以不同;

-- 可進(jìn)行的操作 : 結(jié)構(gòu)體可以進(jìn)行 拷貝 賦值操作, 可以作為 函數(shù)參數(shù) 和 函數(shù)返回值;


1. 結(jié)構(gòu)體的基本使用


結(jié)構(gòu)體聲明 : struct 結(jié)構(gòu)標(biāo)記 {結(jié)構(gòu)成員} 普通變量;

-- 結(jié)構(gòu)體示例 :?

struct student{char *name;int age;};
-- 結(jié)構(gòu)標(biāo)記 : struct 后面的 student 是結(jié)構(gòu)標(biāo)記, 這個(gè)標(biāo)記 可寫 可不寫, 其作用是 為結(jié)構(gòu)命名, 結(jié)構(gòu)標(biāo)記可以代表 {} 中的聲明的所有的成員變量;

-- 結(jié)構(gòu)成員 : 在 {} 中定義的變量就是結(jié)構(gòu)成員;

-- 普通變量 : 在聲明結(jié)構(gòu)體的時(shí)候后面可以加上若干普通變量, 相當(dāng)于定義結(jié)構(gòu)體變量;



結(jié)構(gòu)體變量聲明 : 可以在定義的時(shí)候聲明變量, 也可以在定義完結(jié)構(gòu)體使用 結(jié)構(gòu)標(biāo)記 聲明變量;

-- 定義結(jié)構(gòu)體時(shí)聲明變量 : 這種聲明變量的方式可以不用 結(jié)構(gòu)標(biāo)記, 變量名寫在 花括號(hào) 后面, 用頭號(hào)隔開;

struct student{char *name;int age;} s1, s2, s3;
-- 使用結(jié)構(gòu)標(biāo)記聲明 : 結(jié)構(gòu)標(biāo)記 student 代表了花括號(hào)的聲明, 是 結(jié)構(gòu)體的簡寫, 可以使用結(jié)構(gòu)標(biāo)記代替花括號(hào)中的內(nèi)容;

struct student s4, s5, s6;




結(jié)構(gòu)體內(nèi)存分配 : 結(jié)構(gòu)體內(nèi)存是在聲明變量的時(shí)候分配的, 如果只聲明了結(jié)構(gòu)體, 沒有聲明對(duì)應(yīng)變量, 那么不會(huì)分配內(nèi)存;



結(jié)構(gòu)體變量初始化 :?

-- 聲明結(jié)構(gòu)體的時(shí)候初始化 : struct student s1 = {"Tom", 12} ; 注意 初值表中必須時(shí)結(jié)構(gòu)體對(duì)應(yīng)類型的常量表達(dá)式;

-- 聲明之后初始化 : 結(jié)構(gòu)體變量名.成員名 可以訪問結(jié)構(gòu)體中的成員變量, s1.name = "Tom"; s2.age = 12;


結(jié)構(gòu)體嵌套 : 結(jié)構(gòu)體中的成員變量可以是 結(jié)構(gòu)體變量;

struct student{char *name;int age;} s1;struct class{struct student s1;struct student s2;} c1;

結(jié)構(gòu)體代碼示例 :?

/*************************************************************************> File Name: base_struct.c> Author: octopus> Mail: octopus_work.163.com > Created Time: 2014年03月24日 星期一 10時(shí)49分46秒************************************************************************/#include<stdio.h>int main(int argc, char **argv) {/** 聲明結(jié)構(gòu)體 同時(shí)聲明變量s1*/struct student{char *name;int age;} s1;/** 結(jié)構(gòu)體嵌套*/struct class{struct student s1;struct student s2;} c1;struct student s2 = {"Tom", 12};/*只有聲明的時(shí)候才能對(duì)結(jié)構(gòu)體初始化才能使用花括號(hào)賦值*/struct class c2 = {{"Jack", 13}, {"Pig", 15}};s1.name = "Hack"; /*變量聲明后對(duì)結(jié)構(gòu)體賦值只能一個(gè)一個(gè)賦值*/s1.age = 14;//s1 = {"fuck", 1}; /*只有在初始化的時(shí)候才能使用 花括號(hào)初始化結(jié)構(gòu)體變量*/c1.s1.name = "CJ";c1.s1.age = 21;c1.s2.name = "KW";c1.s2.age = 22;/*訪問結(jié)構(gòu)體中的變量, 使用 . 進(jìn)行訪問*/printf("s1 : name = %s, age = %d \n", s1.name, s1.age);printf("s2 : name = %s, age = %d \n", s2.name, s2.age);printf("c1 : s1 : name = %s, age = %d ; s2 : name = %s, age = %d \n", c1.s1.name, c1.s1.age, c1.s1.name, c1.s2.age);printf("c2 : s1 : name = %s, age = %d ; s2 : name = %s, age = %d \n", c2.s1.name, c2.s1.age, c2.s1.name, c2.s2.age);return 0; }
執(zhí)行結(jié)果 :?

octopus@octopus-Vostro-270s:~/code/c/struct$ gcc base_struct.c octopus@octopus-Vostro-270s:~/code/c/struct$ ./a.out s1 : name = Hack, age = 14 s2 : name = Tom, age = 12 c1 : s1 : name = CJ, age = 21 ; s2 : name = CJ, age = 22 c2 : s1 : name = Jack, age = 13 ; s2 : name = Jack, age = 15


2. 結(jié)構(gòu)體與函數(shù)



結(jié)構(gòu)體的合法操作 :?

-- 整體復(fù)制 : 結(jié)構(gòu)體可以復(fù)制;

-- 整體賦值 : 聲明結(jié)構(gòu)體的時(shí)候可以整體賦值, 在其它情況下不可以;

-- & 取地址 : 使用 & 運(yùn)算符獲取 結(jié)構(gòu)體地址;

-- 訪問成員 : 使用 結(jié)構(gòu)體變量名.成員變量名 可以訪問成員變量;


函數(shù)傳遞結(jié)構(gòu)體方法 :?

-- 傳遞結(jié)構(gòu)體成員 : 將結(jié)構(gòu)體拆開, 將其中的成員變量分別傳入;

struct class create_class(struct student s2, struct student s3) {struct class c1 = {s2, s3};return c1; }

-- 傳遞結(jié)構(gòu)體 : ?將整個(gè)結(jié)構(gòu)體當(dāng)做參數(shù)傳入, 這種情況和傳遞其它類型參數(shù)一樣, 都是通過值傳遞的;

struct class create_class(struct student s2, struct student s3) {struct class c1 = {s2, s3};return c1; }

-- 傳遞結(jié)構(gòu)體指針 : 傳遞結(jié)構(gòu)體的指針, 訪問形式如下;

/** 傳入一個(gè)結(jié)構(gòu)體指針* 通過指針訪問結(jié)構(gòu)體的方法 : * (*結(jié)構(gòu)體指針變量).成員變量 訪問;* 結(jié)構(gòu)體指針變量 -> 成員變量 訪問;*/ void printf_struct_pointer(struct student *s) {printf("student : (*s).name = %s, (*s).age = %d \n", (*s).name, (*s).age);printf("student : s->name = %s, s->age = %d \n", s->name, s->age); }

結(jié)構(gòu)體指針訪問 :

-- 示例 : 定義一個(gè)結(jié)構(gòu)體指針;

struct student{char *name;int age;}*p;

-- "." 和 "->"優(yōu)先級(jí) : 這兩個(gè)運(yùn)算符都是從左到右運(yùn)算, 都是右結(jié)合; "." 和 "->" 優(yōu)先級(jí)比 "*" , "++" 優(yōu)先級(jí)要高; 這兩個(gè)運(yùn)算符 與 () [] 是四個(gè)優(yōu)先級(jí)最高的運(yùn)算符;

-- ++p->age 分析 : 是對(duì)結(jié)構(gòu)體中的 age 進(jìn)行自增操作;

-- *p->name 分析 : 獲取 結(jié)構(gòu)體中的 name 字符串的值(注意不是指針|地址);

-- *p++->name 分析 : 先獲取 name 字符串的值, 再將p自增;



結(jié)構(gòu)體函數(shù)示例 :

/*************************************************************************> File Name: method_struct.c> Author: octopus> Mail: octopus_work.163.com > Created Time: 2014年03月24日 星期一 14時(shí)46分16秒************************************************************************/#include<stdio.h>/*聲明一個(gè)結(jié)構(gòu)體類型, 其成員變量是普通變量*/ struct student {char *name;int age; };/*聲明一個(gè)結(jié)構(gòu)體類型, 其成員變量是結(jié)構(gòu)體*/ struct class {struct student s1;struct student s2; };/** 傳遞 2 個(gè)結(jié)構(gòu)體的成員變量* 在函數(shù)中創(chuàng)建結(jié)構(gòu)體并返回*/ struct student create_student(char *name, int age) {struct student s1 = {name, age};return s1; }/** 傳遞 2 個(gè)結(jié)構(gòu)體變量*/ struct class create_class(struct student s2, struct student s3) {struct class c1 = {s2, s3};return c1; }/** 傳入一個(gè)結(jié)構(gòu)體指針* 通過指針訪問結(jié)構(gòu)體的方法 : * (*結(jié)構(gòu)體指針變量).成員變量 訪問;* 結(jié)構(gòu)體指針變量 -> 成員變量 訪問;*/ void printf_struct_pointer(struct student *s) {printf("student : (*s).name = %s, (*s).age = %d \n", (*s).name, (*s).age);printf("student : s->name = %s, s->age = %d \n", s->name, s->age); }int main(int argc, char **argv) {/*使用函數(shù)獲取一個(gè)結(jié)構(gòu)體, 傳入結(jié)構(gòu)體的值*/struct student s1 = create_student("Tom", 11);printf("student : name = %s, age = %d \n", s1.name, s1.age);/*創(chuàng)建一個(gè)成員變量是結(jié)構(gòu)體的結(jié)構(gòu)體, 并打印結(jié)構(gòu)體數(shù)據(jù)*/struct class c1 = create_class(create_student("Jack", 12), create_student("CJ", 13));printf("c1 : s1 : name = %s, age = %d ; s2 : name = %s, age = %d \n", c1.s1.name, c1.s1.age, c1.s2.name, c1.s2.age);/*聲明結(jié)構(gòu)體指針*/struct student *p = &s1;printf_struct_pointer(p);return 0; }
執(zhí)行結(jié)果 :?

octopus@octopus-Vostro-270s:~/code/c/struct$ gcc method_struct.c octopus@octopus-Vostro-270s:~/code/c/struct$ ./a.out student : name = Tom, age = 11 c1 : s1 : name = Jack, age = 12 ; s2 : name = CJ, age = 13 student : (*s).name = Tom, (*s).age = 11 student : s->name = Tom, s->age = 11

3. 結(jié)構(gòu)體數(shù)組



(1) 結(jié)構(gòu)體數(shù)組聲明初始化



聲明結(jié)構(gòu)體數(shù)組 :?

-- 聲明結(jié)構(gòu)體的時(shí)候聲明結(jié)構(gòu)體數(shù)組 : 格式為 : struct 結(jié)構(gòu)標(biāo)記 {} 數(shù)組名[];?

-- 使用結(jié)構(gòu)標(biāo)記聲明結(jié)構(gòu)體數(shù)組 : 格式為 : struct 結(jié)構(gòu)標(biāo)記 數(shù)組名[];



結(jié)構(gòu)體數(shù)組聲明初始化 :?

-- 逐個(gè)元素初始化 : 數(shù)組名[] = {{結(jié)構(gòu)體1}, {結(jié)構(gòu)體2}};

-- 總體初始化 : 數(shù)組名[] = {常量1, 常量2 ...};?


結(jié)構(gòu)體初始化 :?

/*************************************************************************> File Name: array_struct.c> Author: octopus> Mail: octopus_work.163.com > Created Time: 2014年03月24日 星期一 16時(shí)40分15秒************************************************************************/#include<stdio.h>/** 聲明結(jié)構(gòu)體 * 同時(shí)也聲明結(jié)構(gòu)體類型數(shù)組* 為數(shù)組初始化* 直接將每個(gè)結(jié)構(gòu)體成員的值依次列出即可*/ struct student {char *name;int age; } team1[] = {"Tom", 12,"Jack", 13 };int main(int argc, char **argv) {int i;/*將每個(gè)結(jié)構(gòu)體初始化, 賦值, 每個(gè)結(jié)構(gòu)體初始化內(nèi)容使用 花括號(hào)括起來*/struct student team2[] = {{"CJ", 34}, {"KI", 32}};for(i = 0; i < 2; i++){printf("team1 : team1[i].name = %s, team1[i].age = %d \n", team1[i].name, team1[i].age);}for(i = 0; i < 2; i++){printf("team2 : team2[i].name = %s, team2[i].age = %d \n", team2[i].name, team2[i].age);}return 0; }
執(zhí)行結(jié)果 :?

octopus@octopus-Vostro-270s:~/code/c/struct$ gcc array_struct.c octopus@octopus-Vostro-270s:~/code/c/struct$ ./a.out team1 : team1[i].name = Tom, team1[i].age = 12 team1 : team1[i].name = Jack, team1[i].age = 13 team2 : team2[i].name = CJ, team2[i].age = 34 team2 : team2[i].name = KI, team2[i].age = 32

(2) 結(jié)構(gòu)體數(shù)組示例程序


需求 : 實(shí)現(xiàn)一個(gè)統(tǒng)計(jì) C 語言關(guān)鍵字出現(xiàn)次數(shù);


代碼 :?

/*************************************************************************> File Name: word_count.c> Author: octopus> Mail: octopus_work.163.com > Created Time: 2014年03月24日 星期一 17時(shí)12分32秒************************************************************************/#include<stdio.h> #include<ctype.h> #include<string.h>#define MAXWORD 10/** 定義結(jié)構(gòu)體類型 key * 該類型結(jié)構(gòu)體中存儲(chǔ)一個(gè) 字符串(關(guān)鍵字) 和 int 數(shù)據(jù)(關(guān)鍵字出現(xiàn)次數(shù))* 同時(shí)聲明一個(gè)結(jié)構(gòu)體數(shù)組* 對(duì)結(jié)構(gòu)體數(shù)組進(jìn)行初始化***/ struct key {char *word;int count; }key_count[] = {"auto", 0,"break", 0,"case", 0,"char", 0,"const", 0,"continue", 0,"default", 0,"void", 0,"volatitle", 0,"while", 0 };int main(int argc, char **argv) {int n;char word[MAXWORD];/*循環(huán)接收字符串, 如果字符串與結(jié)構(gòu)體數(shù)組中匹配, 結(jié)構(gòu)體的count ++*/while(getword(word, MAXWORD) != EOF)if(isalpha(word[0]))if((n = binsearch(word, key_count, 10)) >= 0)key_count[n].count++;/*打印大于0的關(guān)鍵字 及 個(gè)數(shù)*/for (n = 0; n < 10; n ++)if(key_count[n].count > 0)printf("%2d %s\n", key_count[n].count, key_count[n].word);return 0; }/* * 重要api解析 :* int getc(FILE *stream) 從標(biāo)準(zhǔn)輸入流中讀取字符* int ungetc(int c, FILE *stream) 將字符退回到標(biāo)準(zhǔn)輸入流中* int isspace(int c) 判斷字符是否是 空格 '\f' '\r' '\n' '\t' '\v'* int isalpha(int c) 判斷是否是字母*/ int getword(char *word, int lim) {int c, getc(FILE*), ungetc(int, FILE*);char *wp = word;/*過濾空格, 如果輸入的不是 空, 就繼續(xù)向下執(zhí)行*/while(isspace(c = getc(stdin)));/*如果輸入的不是結(jié)束符, 那么 wp指針, 先取值, 之后地址自增*/if(c != EOF)*wp++ = c;/*如果輸入的不是字母, 直接返回, 關(guān)鍵字里面沒有數(shù)字開頭的*/if(!isalpha(c)){*wp = '\0';return c;}/** 循環(huán)條件 a. 接收的最大字符個(gè)數(shù) lim, 每讀取一個(gè)字符, 該變量自減 * 當(dāng)該變量自減為0時(shí)停止循環(huán)接收字符串* 循環(huán)條件 b. 當(dāng)讀取到的字符 不是 字母 或者數(shù)字的時(shí)候, 停止循環(huán)*/for(; --lim > 0; wp++){if(!isalnum(*wp = getc(stdin))){ungetc(*wp, stdin);break;}}*wp = '\0';return word[0]; }/** 參數(shù)解析 : word 是要查找的字符串 tab 字符串?dāng)?shù)組 n 字符串大小*/ int binsearch(char *word, struct key tab[], int n) {/** cond 判斷 查找的字符串 是在mid 坐標(biāo)之前 (<0) 之后(>0) 或者就是mid坐標(biāo)* * 如果查找的不是正好中間的變量符合, 就返回 -1 失敗*/int cond, low, high, mid;low = 0;high = n - 1;/** 要找的值的下標(biāo)在low 和 high之間* mid 是 low 和 high 的中值* 如果 word 小于中值下標(biāo) 將比較范圍 縮小*/while(low <= high){mid = (low + high) / 2;if((cond = strcmp(word, tab[mid].word)) < 0)high = mid - 1;else if(cond > 0)low = mid + 1;elsereturn mid;}return -1; }
?

執(zhí)行結(jié)果 :?

[root@ip28 struct]# gcc word_count.c [root@ip28 struct]# ./a.out auto break break char1 auto2 break1 char

宏定義方法 : 獲取結(jié)構(gòu)體數(shù)組大小;

-- sizeof 方法 : sizeof (對(duì)象) | sizeof (類型名稱) 可以獲取對(duì)象 或者 類型占用的存儲(chǔ)空間, 其返回值是 size_t 類型的, 定義在stddef.h 頭文件中;

-- 使用類型測(cè)量 :?

#define KEYS (sizeof(key_count) / sizeof(struct key))-- 使用對(duì)象測(cè)量 :?

#define KEYS (sizeof(key_count) / sizeof(struct key_count[0])


4. 指向結(jié)構(gòu)體指針



(1) 使用指針方式實(shí)現(xiàn)上面的關(guān)鍵字統(tǒng)計(jì)程序?


使用指針進(jìn)行二分查找 :?

-- 使用下標(biāo)找中值 : 在之前找中值時(shí)通過 mid = (low + high)方法, 這樣做可行是因?yàn)?low 從0開始的;

-- 如果是指針情況 : mid low high 都是指針, 那么就不能使用上面的那種方法了, 使用 mid = low + (high - low) / 2;.

-- 指針操作情況的 high 和 low : 其中 low 是首元素的 首地址, high 是 尾元素的尾地址, 只有這樣 它們的差的 0.5 倍才是準(zhǔn)確的中值的首地址;


指針指向數(shù)組注意點(diǎn) : 不要生成非法的指針, 指針不能指向數(shù)組之外的元素;

-- &key_count[-1] : 這個(gè)指針時(shí)非法的;

-- &key_count[n] : 對(duì)數(shù)組的最后一個(gè)元素后面的第一個(gè)元素進(jìn)行 & 運(yùn)算時(shí)合法的, 其它操作都是非法的;


示例程序 :?

/*************************************************************************> File Name: pointer_struct.c> Author: octopus> Mail: octopus_work.163.com > Created Time: Tue 25 Mar 2014 12:31:08 AM CST************************************************************************/#include<stdio.h> #include<ctype.h> #include<string.h>#define MAXWORD 20 /*計(jì)算結(jié)構(gòu)體數(shù)組的大小*/ #define KEYS (int)(sizeof(key_count) / sizeof(struct key))struct key {char *word;int count; } key_count[] = {"auto", 0,"break", 0,"case", 0,"char", 0,"const", 0 };int getword(char *, int); struct key *binsearch(char*, struct key*, int);int main(int argc, char **argv) {char word[MAXWORD];struct key *p; /*存放查找方法返回的結(jié)構(gòu)體指針, 該指針指向數(shù)組中查找到元素的下標(biāo)*/while(getword(word, MAXWORD) != EOF)if(isalpha(word[0]))if((p = binsearch(word, key_count, KEYS)) != NULL)p->count++;for(p = key_count; p < key_count + KEYS; p++)if(p->count > 0)printf("%2d %s \n", p->count, p->word);return 0; }/** 沒有循環(huán)控制變量的 for 循環(huán), 在內(nèi)部通過條件 break*/ int getword(char *word, int max) {int c, getc(FILE*), ungetc(int, FILE*);char *wp = word;/*處理第一個(gè)字符, 第一個(gè)字符不是 空 不是 EOF 再進(jìn)行下面的操作*/while(isspace(c = getc(stdin)));if(c != EOF)*wp++ = c;if(!isalpha(c)){*wp = '\0';return c;}/*循環(huán)接收字符串, 字符串接收到非標(biāo)識(shí)符 或者 到達(dá)個(gè)數(shù)上限停止循環(huán)*/for(; --max > 0; wp++)if(!isalnum(*wp = getc(stdin))){ungetc(*wp, stdin);break;}*wp = '\0';return word[0]; }/** 注意點(diǎn) : * 取兩個(gè)地址的中值 : 一個(gè)數(shù)組n個(gè)元素, 其中值計(jì)算 是由 首元素的首地址 和 尾元素的尾地址計(jì)算的* 二分查找 : * 如果要把區(qū)間前移, 那么就需要將尾地址設(shè)置為 中間元素前一個(gè)元素的尾地址, 即中間元素的首地址* 如果要把區(qū)間后移, 那么就需要將首地址設(shè)置為 中間元素后一個(gè)元素的首地址, 即中間元素 + 1 的地址** 指向結(jié)構(gòu)體數(shù)組的指針 : * struct key tab * 是指向結(jié)構(gòu)體數(shù)組指針, 該指針可以操作結(jié)構(gòu)體數(shù)組*/ struct key *binsearch(char *word, struct key *tab, int n) {int cond;struct key *low = &tab[0]; /*0元素的首地址*/struct key *high = &tab[n]; /*尾元素的尾地址*/struct key *mid;while(low < high){/*計(jì)算中間值的地址*/mid = low + (high - low) / 2;if((cond = strcmp(word, mid->word)) < 0)high = mid; /*mid 是 中間元素前一個(gè)元素的尾地址*/else if(cond > 0)low = mid + 1; /*這里low要成為mid后一個(gè)元素的首地址*/elsereturn mid;}return NULL; }
執(zhí)行結(jié)果 :?

octopus@octopus-Vostro-270s:~/code/c/struct$ gcc pointer_struct.c octopus@octopus-Vostro-270s:~/code/c/struct$ ./a.out auto case auto break2 auto 1 break 1 case



(2) 結(jié)構(gòu)體大小討論?



結(jié)構(gòu)體數(shù)組指針?biāo)阈g(shù)運(yùn)算 : struct key *p = word_count; 指針 p 指向 結(jié)構(gòu)體數(shù)組, 如果 p + 1 , 結(jié)果是 p 地址 加上 結(jié)構(gòu)體所占內(nèi)存大小;


結(jié)構(gòu)體大小 : 結(jié)構(gòu)體的大小不是完全等于各個(gè)成員的長度之和, 對(duì)象之間有對(duì)齊要求;

-- 空穴 : 對(duì)象間對(duì)齊, 會(huì)產(chǎn)生空穴, 占有空間, 但是不存儲(chǔ)數(shù)據(jù);


示例 : 結(jié)構(gòu)體中由一個(gè) char 和 int , 占用的空間卻是 8個(gè)字節(jié), 它們的和是 5個(gè)字節(jié);

/*************************************************************************> File Name: memory_struct.c> Author: octopus> Mail: octopus_work.163.com > Created Time: 2014年03月25日 星期二 12時(shí)55分45秒************************************************************************/#include<stdio.h>struct word {char c;int i; };int main(int argc, char **argv) {printf("sizeof(struct word) = %d \n", sizeof(struct word));return 0; }
執(zhí)行結(jié)果 :?

octopus@octopus-Vostro-270s:~/code/c/struct$ gcc memory_struct.c octopus@octopus-Vostro-270s:~/code/c/struct$ ./a.out sizeof(word) = 8

.

作者?:?萬境絕塵

轉(zhuǎn)載請(qǐng)注明出處?:?http://www.hanshuliang.com/?post=30

.

總結(jié)

以上是生活随笔為你收集整理的【C 语言】结构体相关 的 函数 指针 数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。