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