指標學習2

2021-08-14 01:12:41 字數 1944 閱讀 9091

主要是指標陣列、陣列指標、函式指標的學習,以及二重指標、二維陣列的學習。

(1)一般規律:int *p;(p是乙個指標); int p[5];(p是乙個陣列);

(2)定義符號時,首先要搞清楚定義的符號是誰(第一步:找核心),接著看誰跟核心結合(第二步:找結合),然後繼續向外擴充套件。

(3)分析

(1)程式為什麼要分層?

(2)總結

typedef struct teacher

teacher, *pteacher;

(1)typedef int *pint;const pint p2; 相當於是int *const p2;

(2)typedef int *pint;pint const p2; 相當於是int *const p2;

(3)如果確實想得到const int *p;這種效果,只能typedef const int *cpint; cpint p1;

(1)簡化型別的描述

(2)創造與平台無關的型別。

(1)二重指標本質上也是指標變數,和普通指標的差別就是它指向的變數型別必須是個一重指標。

(2)為什麼c語言需要發明二重指標?

(1)二重指標指向一重指標的位址;

(2)二重指標指向指標陣列;

(3)實踐程式設計中二重指標用的比較少,大部分時候就是和指標陣列糾結起來用的。

(4)實踐程式設計中有時在函式傳參時,為了通過函式內部改變外部的乙個指標變數,會傳這個指標變數的位址(也就是二重指標)進去

(1)二維陣列的陣列名表示二維陣列的第一維陣列中首元素(也就是第二維的陣列)的首位址;

(2)二維陣列的陣列名a等同於&a[0],這個和一維陣列的符號含義是相符的。

(3)用陣列指標來指向二維陣列的陣列名是型別匹配的。

(1)用int *p來指向二維陣列的第一維a[i]

(1)二維陣列的第二維元素其實就是普通變數了(a[1][1]其實就是int型別的7),已經不能用指標型別和它相互賦值了。

(2)除非int *p = &a[i][j];,類似於指標指向二維陣列的第一維。

#include int main(void)

, };

//int a[2][5] = ;

printf("a[1][3] = %d.\n", a[1][3]);

printf("a[1][3] = %d.\n", *(*(a+1)+3));

//int *p1 = a; // 型別不匹配

//int **p2 = a; // 型別不匹配

// 指標指向二維陣列的陣列名

int (*p3)[5]; // 陣列指標,指標指向乙個陣列,陣列有5個int型別元素

p3 = a; // a是二維陣列的陣列名,作為右值表示二維陣列第一維的陣列

// 的首元素首位址,等同於&a[0]

p3 = &a[0];

printf("a[0][3] = %d.\n", *(*(p3+0)+3));

printf("a[1][4] = %d.\n", *(*(p3+1)+4));

// 指標指向二維陣列的第一維

//int *p4 = &a[0]; // 不可以

int *p4 = a[0]; // a[0]表示二維陣列的第一維的第乙個元素,相當於是

// 第二維的整體陣列的陣列名。陣列名又表示陣列首元素

// 首位址,因此a[0]等同於&a[0][0];

int *p5 = &a[0][0];

printf("a[0][4] = %d.\n", *(p4+4));

int *p6 = a[1];

printf("a[1][1] = %d.\n", *(p6+1));

// 指向二維陣列的第二維

return 0;

}

指標學習2

1 指向指標的指標 二級指標 指向一級指標 值一定是一級指標的位址 例 int num 10 int p 一級指標 值是變數的位址 int pf p 二級指標 值是一級指標的位址 int q pf 指標 值是二級指標的位址 printf p d,pf d,q d p,pf,q 解幾級指標,就咬用到幾...

C 學習筆記 指標2

關於指標形參的注意事項 不要企圖通過改變指標形參的值而使指標實參的值改變,看下面的 include void swap int p1,int p2 int main int a 5,b 9 int pa,pb pa a pb b if a b swap pa,pb std cout a b 要想輸入...

《C和指標》學習筆記2

在c中,在幾乎所有使用陣列名的表示式中,陣列名的值是乙個指標常量,也就是陣列裡第乙個元素的位址。它的型別取決於陣列元素的型別。只有在兩種情況下,陣列名並不用指標常量來表示,就是當陣列名作為sizeof操作符或者單目操作符 的操作時。sizeof返回整個陣列的長度,而不是指向陣列的指標的長度。取乙個陣...