久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

C語(yǔ)言:結(jié)構(gòu)體與結(jié)構(gòu)體指針

作者:xuchen   來(lái)源:xuchen的blog   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月28日   【字體:

1、指向結(jié)構(gòu)體的指針變量:

C 語(yǔ)言中->是一個(gè)整體,它是用于指向結(jié)構(gòu)體,假設(shè)我們?cè)诔绦蛑卸x了一個(gè)結(jié)構(gòu)體,然后聲明一個(gè)指針變量指向這個(gè)結(jié)構(gòu)體,那么我們要用指針取出結(jié)構(gòu)體中的數(shù)據(jù),就要用到指向運(yùn)算符“->”.
 
 
舉例說(shuō)明:
 
 
struct SunLL
{
  int a;
 
 
  int b;
 
 
  int c;
};         
 
struct SunLL  * p;               //定義結(jié)構(gòu)體指針
struct SunLL A = {1,2,3};    //定義一個(gè)SunLL類型的變量A
 
 
int x;                                //定義一個(gè)變量x
p = &A ;                          //讓p指向A
x = p->a;                       //等價(jià)于  x=(*p).a         (*p)表示p指向的結(jié)構(gòu)體變量
 
 
                                      //這句話的意思就是取出p所指向的結(jié)構(gòu)體中包含的數(shù)據(jù)項(xiàng)a賦值給x
 
                                     //由于此時(shí)p指向A,因而 p->a == A.a,也就是1
 
 
2、指向結(jié)構(gòu)體數(shù)組的指針變量:
 
 
指向結(jié)構(gòu)體的指針變量也可以指向結(jié)構(gòu)體數(shù)組及其元素。
 
 
如果程序如下:
 
 
struct SunLL *p,sun[3];
 
 
p = sun;
 
 
如果假定sun[0]的地址是1000,指針變量p指向結(jié)構(gòu)體數(shù)組sun的首地址,由于size of(struct SunLL)的值是6,每個(gè)結(jié)構(gòu)體元素占內(nèi)存空間6個(gè)字節(jié),因此p+1指向地址1006,p+2指向地址1012.
 
 
使用指針變量指向結(jié)構(gòu)體變量或結(jié)構(gòu)體數(shù)組時(shí),應(yīng)注意運(yùn)算符的優(yōu)先級(jí),在c語(yǔ)言中"()" "[ ]" "->" "."四個(gè)優(yōu)先級(jí)相同,具有最高的優(yōu)先級(jí),其次是”*“ ”++“ ”--“ ”&“四個(gè)相同優(yōu)先級(jí)的運(yùn)算符。如:++P->a的表達(dá)式等價(jià)于++(p->a)
 
 
(++p)->a先計(jì)算++p,p指向sun[1];
 
 
P++->a;則表達(dá)式等價(jià)于(p++)->a;
 
 
p->a++的表達(dá)式等價(jià)于(p->a)++;
 
 
3、結(jié)構(gòu)體作為函數(shù)參數(shù)與結(jié)構(gòu)體指針作為函數(shù)參數(shù)
 
 
舉例1
 
 
struct st
 
 
{
 
 
int a;
 
 
char b;
 
 
};
 
 
fun(struct st bc)
 
 
{
 
 
bc.a+=5;
 
 
bc.b='A';
 
 
printf("%d,%c\n",bc.a,bc.b);
 
 
}
 
 
main()
 
 
{
 
 
struct st bl;
 
 
bl.a=3;
 
 
bl.b="c";
 
 
fun(bl);
 
 
printf("%d,%c\n",bl.a,bl.b);
 
 
}
 
 
運(yùn)行結(jié)果為:8,A        3,c
 
 
舉例2:
 
 
struct st
 
 
{
 
 
int a;
 
 
char b;
 
 
};
 
 
fun(struct st *bp)
 
 
{
 
 
bp->a+=5;
 
 
bp->b='A';
 
 
printf("%d,%c\n",bc.a,bc.b);
 
 
}
 
 
 
main()
 
 
{
 
 
struct st bl;
 
 
bl.a=3;
 
 
bl.b="c";
 
 
fun(&bl);
 
 
printf("%d,%c\n",bl.a,bl.b);
 
 
}
 
 
運(yùn)行結(jié)果為:8,A        8,A
 
 
總結(jié):
 
 
將結(jié)構(gòu)體變量作為函數(shù)參數(shù),是將實(shí)參值傳遞給形參,屬于值傳遞。將結(jié)構(gòu)體所有參數(shù)傳遞給形參使用,但本身的值不會(huì)改變。將指向結(jié)構(gòu)體變量的指針作為實(shí)參進(jìn)行傳遞時(shí),是將結(jié)構(gòu)體變量的地址傳遞給形參,屬于地址傳遞,會(huì)改變實(shí)際結(jié)構(gòu)體變量的成員值的。
 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产日韩欧美综合 | 中文字幕蜜臀av | 91麻豆精品国产91久久久久久 | 久久新视频 | 99精品久久 | av高清 | 欧美激情精品久久久久久变态 | 成人av免费在线观看 | 黄色在线播放视频 | 精品www| 99久久免费精品国产男女高不卡 | av国产精品毛片一区二区小说 | 伊人一二三 | 久久伦理电影 | 日韩av资源站 | 91免费观看在线 | 亚洲高清电影 | 自拍 亚洲 欧美 老师 丝袜 | 欧美中文字幕一区二区三区亚洲 | 成人在线黄色 | 天天夜夜人人 | 国产小网站 | 精品国产99| 成人精品久久 | av黄色在线 | 中文精品视频 | 亚洲成人精品国产 | 亚洲高清在线观看 | 日韩1区| 日韩精品免费一区 | 中国免费黄色片 | 国产真实精品久久二三区 | 日韩欧美操 | 全部免费毛片在线播放网站 | 国产视频一区二区 | 国产精品乱码一二三区的特点 | 在线看无码的免费网站 | 免费观看一级黄色录像 | 亚洲一区精品在线 | 久久久久久成人 | 久久精品日产第一区二区三区 |