C 指標 陣列

2022-07-17 02:15:11 字數 1565 閱讀 4182

1.宣告變數:在計算機記憶體中取得一小塊記憶體,並為這塊記憶體取乙個名字(例在編譯器中輸入int a; 表明取得的這塊記憶體只能存放整形資料,並且用a可以代表這個整形資料,a就是它的名字)

2.宣告陣列:在計算機記憶體中取得連續的幾塊記憶體,(例在編譯器中輸入int a[5]; 表明在計算機內取得連續的五塊記憶體,並把排在第乙個記憶體的位址用a表示,此時的a雖然是陣列名,但是它本身就是乙個指標,也就是陣列第乙個記憶體的位址),a[0]的位址是a, a[1]的位址是a+1, a[2]的位址是a+2.....a[4]的位址是a+4(注意陣列a[5]中沒有成員a[5],只有a[0]-a[4])。

3.為什麼要陣列這種資料結構:假如只要宣告乙個或少數變數,只要在編譯器中輸入int a,int b,int c;但這樣有個缺點,就是一旦你要輸入很多資料,就要同時輸入很多變數名,如輸入100個資料,就要宣告一百個變數名,這樣比較麻煩了,但是陣列就很方便了,a[0]-a[99],f賦值的時候用乙個for迴圈:for(i=0;i<=99;i++)

scanf(『%d』,&a[i]);

就可以連續輸入100個整形資料;

4.指標:指標的本質就是位址,取位址的符號是&,比如你在編譯器中輸入int a; 就取得一塊叫做a的記憶體,但是這塊記憶體是有位址的,&a就能取得變數a的位址,只要在變數名前加個&,計算機記憶體很大,其中劃分了很多很多很多小塊記憶體,就像乙個小區,裡面住了很多人家,每戶人家都有門牌號碼,指標就像這個門派號碼,那它有什麼好處呢?打個比方,老師要見你的全家,有兩種方法:第一,讓你全家人去學校找老師;第二,把你家的位址給老師,讓他自己去找,相比較,第二種方法好,因為全家人多,不方便,如果只見你爸爸,就第一種方法好;

5.int整形資料或者其他資料;比如在編譯器中打如:int a=5; int * p; p=&a;此時的*p和a是等價的,都是5;(*的含義見下文)

6.指標和陣列的聯絡:你在編譯器中輸入int a[5];如果其他地方要用到陣列裡的資料,可以把a[0]-a[4]挨個傳過去,但是這只適用於資料量較小的陣列,如果a[100],就比較麻煩了,為什麼呢,太多了,要傳一百個呢,但是有一種好辦法就是傳個指標就ok了,這個陣列的指標就是陣列的變數名a,要訪問a[0]裡的資料,只要在a的前面加乙個*就好了,在指標(位址)前加*表明這塊位址中存放的資料,*a和a[0]是等價的,好了,a[0]是可以訪問了,但是a[1],a[2]...a[4]怎麼辦呢?a只表示a[0]啊,此時訪問a[1]只要把*a改成*(a+1)就可以了,訪問a[2]只要把*a改成*(a+2)就可以了,下面以此類推。那為啥只要在a後加1加2就可以了呢,因為你分配的陣列記憶體是連續的,就像排好隊的,加1,就代表訪問下*a後面的變數,,加2就是訪問*(a+1)後面的變數,後面也一樣,所以很方便的,用乙個陣列只要得到他的陣列名(就是第乙個陣列元素的位址)就好了。

7.

c 陣列指標 指標陣列 函式指標

優先順序比 高,低於 根據這個原則去判斷 陣列指標 陣列指標即陣列的指標,是乙個指標,指向乙個陣列 也稱為行指標 int p 2 可以理解為int 2 p,但是不能這樣子定義 p是乙個指標,指向乙個陣列,陣列元素是int長度為2 二維陣列可以賦值給陣列指標 int a 3 4 int p 4 p a...

C 指標陣列與陣列指標

說實話,c語言真的很讓人蛋疼,它不像物件導向的語言,我們重心在設計程式上。而使用c語言,你不僅要考慮程式的設計,你還要考慮很多他的使用細節,不然一不小心你怎麼死的都不知道。但是,個人感覺,c語言的魅力是其他任何語言都比不了的!繼續看。陣列指標 範例 typedef int aint5 5 typed...

C指標陣列和陣列指標

測試 int main 定義二維陣列m並初始化 int p 4 陣列指標 p是指標,指向一維陣列,每個一維陣列有4個int元素 int i,j int q 3 指標陣列 q是陣列,陣列元素是指標,3個int指標 p m p是指標,可以直接指向二維陣列 printf 陣列指標輸出元素 n for i ...