C語言中 指標與結構體

2022-03-20 13:13:14 字數 1370 閱讀 1228

就像陣列一樣,指向結構體的指標儲存了結構體第乙個元素的記憶體位址。與陣列指標一樣,結構體的指標必須宣告和結構體型別保持一致,或者宣告為void型別。12

3456

78910

1112

13structperson ;

structperson first;

structperson *ptr;

first.age = 21;

char*fullname ="full name";

first.name = fullname;

ptr = &first;

printf("age=%d, name=%s\n", first.age, ptr->name);

第1至6行宣告了乙個person結構體,乙個變數指向了乙個person結構體和指向person結構體的指標。第8行為age成員賦了乙個int值。第9至10行我們宣告了乙個char指標並賦值給乙個char陣列並賦值給結構體name成員。第11行我們把乙個person結構體引用賦值給結構體變數。

第13行我們列印了結構體例項的age和name。這裡需要注意兩個不同的符號,』.』 和 『->』 。結構體例項可以通過使用 『.』 符號訪問age變數。對於結構體例項的指標,我們可以通過 『->』 符號訪問name變數。也可以同樣通過(*ptr).name來訪問name變數。

指標和結構型別的關係

可以宣告乙個指向結構型別物件的指標。 

例十一: 

structmystruct 

mystructss=;

//宣告了結構物件ss,並把ss的三個成員初始化為20,30和40。 

mystruct*ptr=&ss;

//宣告了乙個指向結構物件ss的指標。它的型別是mystruct*,它指向的型別是mystruct。 

int*pstr=(int*)&ss;

//宣告了乙個指向結構物件ss的指標。但是它的型別和它指向的型別和ptr是不同的。

請問怎樣通過指標ptr來訪問ss的三個成員變數? 

答案: 

ptr->a; 

ptr->b; 

ptr->c; 

C語言中指標陣列與陣列指標

1 指標陣列的實質是乙個陣列,這個陣列中儲存的內容全部是指標變數。2 陣列指標的實質是乙個指標,這個指標指向的是乙個陣列。1 int p 5 int p 5 int p 5 2 一般規律 int p p是乙個指標 int p 5 p是乙個陣列 3 如果核心和 結合,表示核心是指標 如果核心和 結合,...

C語言中指標大全

1.使用二維字串儲存字串的時候會出現儲存浪費的情況,使用指標陣列儲存則不會 char s for i 0 ifor i 0 i 3 i 2.指標陣列作為函式引數傳遞多個字串給另乙個函式。指標陣列是乙個陣列,只是裡面存放了指標 void str sort char s,int n n代表指標陣列的長度...

C語言中的結構體指標

struct birthday 宣告結構體型別 typedef 定義新型別,為型別取別名 typedef 原有型別,新型別 typedef struct student student void printstudent struct student student void printstuden...