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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

结构体成员的存储

發(fā)布時(shí)間:2025/6/15 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构体成员的存储 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? 剛開始學(xué)C語言只知道怎么引用結(jié)構(gòu)體成員變量,但卻很少關(guān)注結(jié)構(gòu)體成員的存儲(chǔ),存儲(chǔ)涉及到了內(nèi)存對(duì)齊相關(guān)的知識(shí),要能很準(zhǔn)確的引用結(jié)構(gòu)體成員變量也需要學(xué)習(xí)一下它的存儲(chǔ)。

?

#include<stdio.h>typedef struct node {int a;char str[2];char c;char str1[2]; }Node,*pNode;int main() {Node nodeTest={100,"b",'m',"1"};pNode p=&nodeTest;printf("%d\n",p->a);printf("%s\n",&(p->a)+1);printf("%s\n",p->str);printf("%s\n",&(p->a)+2);printf("%d\n",sizeof(nodeTest));return 0; }

打印:100

?

? ? ? ? ? ? ?b

?

? ? ? ? ? ? 12 ? ? ? ? ??

通過打印結(jié)果可以看出,結(jié)構(gòu)體里面的成員變量是存儲(chǔ)在相鄰的內(nèi)存中。按內(nèi)存對(duì)齊原則,其中成員a占4個(gè)字節(jié),成員str和c一起共占4個(gè)字節(jié),str1成員也占4個(gè)字節(jié),所以一起占12個(gè)字節(jié),與sizeof()函數(shù)的結(jié)果剛好一致。但是上述打印結(jié)果又一個(gè)問題,printf("%s\n",&(p->a)+2)結(jié)果為空,這是什么原因呢?不過首先說一下&(p->a)+2到底移動(dòng)了幾個(gè)位。其實(shí)它是移動(dòng)了8個(gè)位。成員a占4個(gè)字節(jié),則&(p->a)沒加1是前進(jìn)4個(gè)字節(jié)。那么按照內(nèi)存對(duì)齊原則,則應(yīng)該剛好打印成員str1的值啊,什么原因呢?繼續(xù)看

?

#include<stdio.h>typedef struct node {int a;char str[2];char c;char str1[4]; }Node,*pNode;int main() {Node nodeTest={100,"b",'m',"123"};pNode p=&nodeTest;printf("%s\n",&(p->a)+2);return 0; }

打印:23

?

從打印結(jié)果可以看出,&(p->a)+2已經(jīng)指向str1中'2'對(duì)應(yīng)的地址。指針在偏移的時(shí)候沒有考慮內(nèi)存對(duì)齊兒空缺的那一個(gè)字節(jié),所以最后導(dǎo)致偏移多了一位,這樣就造成了上面的打印結(jié)果為空。

?

在工作中,我們通常要在別人的代碼中增加新的功能,在增加功能的過程中可能要向結(jié)構(gòu)體中增加新的成員變量。由于內(nèi)存存儲(chǔ)是連續(xù)的,所以不能從結(jié)構(gòu)體中間增加變量,因?yàn)檫@樣會(huì)造成賦值混亂,出現(xiàn)內(nèi)存溢出。正確的做法是添加新成員到結(jié)構(gòu)體的尾部。

#include<stdio.h>typedef struct node {int a;char str[2];//char str2[2];在這里添加會(huì)造成內(nèi)存溢出char c;char str1[4];char str2[2];//在這里添加是正確的 }Node,*pNode;int main() {Node nodeTest={100,"b",'m',"123"};pNode p=&nodeTest;printf("%d\n",p->a);printf("%s\n",p->str);printf("%c\n",p->c);printf("%s\n",p->str1);return 0; }

打印:100

?

? ? ? ? ? ? b

? ? ? ? ? ? m

? ? ? ? ? ?123

如果打印str2,其結(jié)果也是空


?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的结构体成员的存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色妞欧美 | chien国产乱露脸对白 | 日韩精品一二三四 | 亚洲欧美日韩国产一区二区三区 | 污污污污污污www网站免费 | 欧美一级片黄色 | 日韩在线观看免费 | 亚洲国产精品自拍 | a成人在线 | 五月婷婷网站 | 国产av日韩一区二区三区精品 | 一二三四区在线 | 国产三级精品视频 | 亚洲一区在线视频观看 | 国产精品爽爽爽 | 美女隐私直播 | 黄色高清片| 国产精品欧美一区二区三区 | 自拍偷拍20p| 亚洲综合五月天婷婷丁香 | 白嫩初高中害羞小美女 | 中文字幕久久久久久久 | 久久国产亚洲 | 日本成人久久 | 亚洲天堂色图 | 黑人vs日本人ⅹxxxhd | 久久久久久久久影院 | 中文字幕精品久久久久人妻红杏ⅰ | 粉嫩小泬无遮挡久久久久久 | 国产乱视频| 91黄免费 | 天天摸天天舔 | av三级网站 | 色播久久| 日韩色综合| 中文字幕在线免费观看视频 | 亚洲伦理一区二区三区 | 亚洲视频日韩 | 亚洲一区二区三区香蕉 | 精品无码久久久久国产 | 先锋资源一区二区 | 亚洲插插插 | 国产精品一二三 | 欧美视频在线观看一区 | 亚洲av无码国产精品久久不卡 | 今天最新中文字幕mv高清 | 午夜视频网站 | 性xxxxx大片免费视频 | 欧美丰满老妇熟乱xxxxyyy | 欧美日本另类 | 奇米中文字幕 | 日本黄色片段 | 亚洲欧美精品在线观看 | 欧美一区二区久久久 | 亚洲毛片一区二区三区 | 高跟丝袜av| 亚洲一区二区三区四区五区六区 | 99色在线 | 91成人在线观看喷潮动漫 | 国产综合精品在线 | 欧美日韩18 | 操屁股视频 | 91久久国产综合久久 | 欧美视频在线观看 | 亚洲欧美在线不卡 | 高清三区 | 小视频在线 | 国产精品第二十页 | 欧美一级片一区二区 | 中国少妇无码专区 | 龚玥菲三级露全乳视频 | 九九久久久 | 亚洲23p | 色哟哟网站在线观看 | 无码av免费精品一区二区三区 | 久久久久久国产精品视频 | 少妇紧身牛仔裤裤啪啪 | 亚洲精品白虎 | 男人天堂网在线视频 | 丰满人妻在公车被猛烈进入电影 | 午夜精品久久久久久久爽 | 午夜毛片电影 | 欧美日韩一区二区三区国产精品成人 | 91不卡在线 | 亚洲午夜一区 | 肉嫁高柳家在线看 | 伊人3| 人人澡人人澡人人 | 91九色蝌蚪porny | 成年人网站在线观看视频 | 国内一级视频 | 亚洲性生活| 久草麻豆 | 欧美三级午夜理伦三级小说 | 精品啪啪| 日本网站免费 | 欧美bdsm调教视频 | 午夜一级免费 | 成人片免费视频 |