結構體指針即指向結構體的指針。
當一個指針用來指向一個結構體變量時,稱之為結構體指針變量。結構體指針變量中的值是所指向的結構變量的首地址,通過結構指針即可訪問該結構變量。這與數(shù)組指針和函數(shù)指針的情況是相同的。結構體指針變量定義的一般形式為:
struct 結構類型名 *結構指針變量名
定義之后,就可以像之前學過的指針一樣,將結構體類型的變量賦值給這個指針即可,后面就可以用這個指針間接的訪問結構體了,需要注意的是,不用于結構體變量用點(.)來訪問成員的方法,結構體指針是通過箭頭(->)來訪問的,下面給大家一個完整的例子來學習。
#include<stdio.h> struct address { char name[30]; /*姓名,字符數(shù)組作為結構體中的成員*/ char street[40]; /*街道*/ unsigned long tel; /*電話,無符號長整型作為結構體中的成員*/ unsigned long zip; /*郵政編碼*/ }; int main() { struct address A[3]={{"Zhang","Road NO.1",111111,4444}, {"Wang"," Road NO.2",222222,5555}, {"Li"," Road NO.3",333333,6666}}; struct address *p; p=&A[0]; printf("%s %s %u %u\n",p->name,p->street,p->tel,p->zip); return 0; }
大家可以親自上機,理解代碼并試驗!
接著個程序,拋出一個問題,如果想通過循環(huán),循環(huán)三次來輸出全部A數(shù)組中的成員內容,如何通過P指針實現(xiàn)呢?
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程