陣列與指標

2021-07-16 13:29:10 字數 2298 閱讀 2957

定義了型別函式,則要返回相應的值。(return)

指標可以改變區域性常量的值。

指標型別要和他指向的型別一致。

上午:指向指標的指標:int a = 0;

int *p = &a;

int **p = &p;

其實從取每個指標的位址會發現,指標在記憶體中其本身有自己的位址,但是因為它是指標,所以它有指向問題,如果從第乙個指標指向的位址有問題,會影響之後所有的指標指向。所以,指向指標的位址主要就是指向前乙個指標的位址,而取到的的值也是前乙個指標取到的值,其中任何乙個指標的值改變,都會改變原變數的值。

指標是一種變數,它也有自己的位址,所以它本身也是可用指標指向的物件。我們可以將指標的位址存放在另乙個指標中,如:

此時的ppi即是乙個指向指標的指標,下圖表示了這些物件:

i的位址為108,pi的內容就是i的位址,而pi的位址為104,ppi的內容即是pi的位址。對ppi解引用照常會得到ppi所指的物件,所獲得的物件是指向int型變數的指標pi。想要真正地訪問到i.,必須對ppi進行兩次解引用,如下面**所示:

printf("%d",i);

printf("%d",*pi);

printf("%d",**ppi);

以上三條輸出的結果都是5000。

下午:指標與一維陣列和二維陣列

int a[4] = ;

int *p = a;     //等價於int *p;

//p = &a[0];

上面定義了乙個指標,指向陣列的第乙個元素a[0]的位址。而指標每加乙個位址長度,就是向下乙個元素指。在這就同樣可以得知,用指標的算術方式去列印其陣列中的每乙個數值。同時,又誕生出乙個新的等價方式,即: *p+n; 等價於a[n];

陣列中的值也可以通過指標進行更改。

二維陣列與指標:

二維陣列相對一維陣列,引入了列的概念,所以指標指向時,又多了乙個定位去確定乙個元素,先通過看下方**進行解說:

[cpp]view plain

copy

#include

void

main(), ,  };  

for(

inti = 0; i 

}  printf("逐個列印%d,%d\n"

,a,*a);                     

//這兩行列印的都是第一行第乙個元素的位址

printf("%d,%d\n"

,a[0],*(a+0));              

//printf("%d,%d\n"

,a[2],*(a+2));  

printf("%d,%d\n"

,&a[1][0],*(a+1)+0);  

printf("%d,%d\n"

,&a[2],a+2);  

printf("%d,%d\n"

,*a[2],*(*(a+2)+0));  

printf("%d,%d\n"

,a[1],a+1);  

getchar();  

}  

從上往下看,首先定義了乙個二維陣列,之後看for迴圈,這與之前下標列印二位陣列部分相同,但是,列印的a[i]+j是個什麼東西呢?看i的定義初始值為0,自加到三,可以與陣列的函式相對應,所以不難看出i表示的是行數,與之同理得知j是表示的列數,橫豎兩個定位即可確定乙個點,這個點就是陣列元素,前面又有*p = a;這種方式,可以得知迴圈括號中列印的其實是每乙個元素的記憶體位址。

列印的是位址)

那麼下面的列印開始,第乙個a[0]列印的是a陣列中第一行第乙個的位址;後乙個也是第一行第乙個的位址

第三行第乙個元素的位址;a初始元素+i(2)+j(0)沒有再加括號的*,可以得知這個取得的還是位址

有位址符在有精確的下標,毫無疑問這個是第二行第乙個元素的位址;此時i= 1,j=0,沒有再加括號包*,所以取的還是位址

有位址符號,只有行座標,可以得知這是第三行第乙個座標;a初始元素位址直接加的是i沒加j所以,又是乙個位址

有*有下標即可以確定乙個值的大小,這是第三行第乙個元素的值15;後面乙個位址外包還有乙個*,說明取的是值,看i和j定位的還是15;

只有乙個下標沒有其他,只是第二行第乙個元素的位址;a初始位址+i,也可以得知得出的是位址,因為加1行,所以是第二行第乙個數的位址;

今天學習的比較繞,還是要多敲敲**去解決困擾。 

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...

指標陣列與陣列指標

1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...

指標陣列與陣列指標

呵呵,實在是厭倦了繞口的解釋。指標陣列,故名思義,就是指標的陣列,陣列的元素是指標 陣列指標,同樣,就是直想陣列的指標。簡單舉例說明 int p 2 首先宣告了乙個陣列,陣列的元素是int型的指標。int p 2 宣告了乙個指標,指向了乙個有兩個int元素的陣列。其實這兩種寫法主要是因為運算子的優先...