今天在網(wǎng)上搜集了一篇文章,講的是C++的一些基礎(chǔ)知識(shí),大家一起學(xué)習(xí)一下: 對(duì)使用指針來處理數(shù)據(jù)讀者應(yīng)有了一些體會(huì),即先定義一以數(shù)據(jù)或元素類型為基類型的指針變量;其次在定義的指針變量與要處理的數(shù)據(jù)之間建立關(guān)聯(lián),讓指針變量指向要處理的數(shù)據(jù);然后引用指針指向變量來完成數(shù)據(jù)的處理。 使用指針來處理結(jié)構(gòu)體數(shù)據(jù)也不例外,下面舉例說明。 例指向結(jié)構(gòu)體變量的指針變量的應(yīng)用示例。 假設(shè)有一結(jié)構(gòu)體,包含某人的姓名和年齡,用指向結(jié)構(gòu)體變量的指針變量完成輸出處理。
源程序如下: /*程序10一13,指針應(yīng)用于結(jié)構(gòu)體*/ main() {struct person {char *name; int age: )someone; struct person *p;/*定義結(jié)構(gòu)體類型的指針變量*/ someone.name=”張三”;/*假定姓名為張三*/ someone.a(chǎn)ge=20; p=&s19meone/*建立關(guān)聯(lián),*p即someone*/ printf(”姓名=%s,年齡=%d\n",(*p).name,(*p).a(chǎn)ge); /*等價(jià)于printf(”姓名=%s,年齡=9td\n",someone.name,someone.a(chǎn)ge);*/ ) 運(yùn)行結(jié)果:姓名=張三,年齡=20 說明: (1)在用指向結(jié)構(gòu)體的指針變量描述結(jié)構(gòu)體的分量時(shí),必須使用“()”。如不使用“()”,像上例中*p.name,由于“.”運(yùn)算的優(yōu)先級(jí)比“*”高,這時(shí)實(shí)際表示就成為*(p.name),而不是(*p).name。 (2)結(jié)構(gòu)體變量的指針,是指結(jié)構(gòu)體變量的首地址,而不是變量中某成員的地址。指向結(jié)構(gòu)體的指針變量不能指向結(jié)構(gòu)體的成員。如: p=&someone.name;/*錯(cuò)誤*/ (3)引入指向結(jié)構(gòu)體的指針變量后,為了書寫方便和直觀使用,C語言提供指向結(jié)構(gòu)體成員運(yùn)算來得到結(jié)構(gòu)體的成員。“一>”運(yùn)算符由“一”和“>”復(fù)合組成。如p一>name、p一>age即someone.name、someone.a(chǎn)ge。“一>”運(yùn)算優(yōu)先級(jí)與“.”運(yùn)算相同。 至此,我們有三種形式來引用結(jié)構(gòu)體成員:結(jié)構(gòu)體變量.成員名、(*結(jié)構(gòu)體指針).成員名、結(jié)構(gòu)體指針一>成員名。 (4)對(duì)于使用結(jié)構(gòu)體指針來處理結(jié)構(gòu)體數(shù)組與前面介紹的使用指針來處理數(shù)組完全類似。
|