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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

结构体的传参理解成员的存储方式

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构体的传参理解成员的存储方式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
結(jié)構(gòu)體的成員變量在內(nèi)存中存儲(chǔ)的方式,決定于設(shè)定的內(nèi)存對(duì)齊方式是幾字節(jié):gcc編譯默認(rèn)使用4字節(jié)對(duì)齊:

1
#include <stdio.h> 2 3 typedef struct test_buf 4 { 5 int a; 6 char c; 7 char buf[8]; 8 char *str; 9 10 }buf_t; 11 12 void test_send_srtbuf(void *arg) 13 { 14 //buf_t *revbuf = (buf_t *)arg; 15 buf_t *revbuf = arg; 16 printf("revbuf->a=%d,revbuf->c=%c,revbuf->buf=%s,revbuf->str=%s\n",revbuf->a,revbuf->c,revbuf->buf,revbuf->str); 17 //char *testbuf = arg; 18 //printf("testbuf=%s,testbuf大小為:%d\n",testbuf,sizeof(testbuf)); 19 return; 20 } 21 int main(void) 22 { 23 int len = 0; 24 char revbuf[30] = {0}; 25 buf_t buf={ 26 .a = 25, 27 .c = 'b', 28 .buf="hello wr", 29 .str = "w143bd", 30 }; 31 len = sizeof(buf); 32 printf("len =%d.\n",len); 33 printf("buf.a=%d ,buf.c=%c, buf.buf=%s, buf.str=%s\n",buf.a,buf.c,buf.buf,buf.str); 34 test_send_srtbuf(&buf); 35 return 0; 36 }
上面程序的運(yùn)行結(jié)果: 調(diào)用test_send_strbuf時(shí),參數(shù)被解析為了void類型,解析時(shí)為了防止數(shù)據(jù)錯(cuò)亂,將它強(qiáng)制類型轉(zhuǎn)換為結(jié)構(gòu)體類型,賦值給了另一個(gè)變量,就可以訪問(wèn)成員的值。

?

轉(zhuǎn)載于:https://www.cnblogs.com/path130/p/11114877.html

總結(jié)

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

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