C中陣列指標的一些問題

2022-09-04 18:21:09 字數 751 閱讀 9723

1.有乙個二維陣列 int a[3][4],對於a相關的一些指標,具體含義如下:

對於一位陣列int a[10],a是陣列首元素的位址,&a是整個陣列的位址。所以a+1和&a+1的步長不一樣,前者的步長是4,後者的步長是40。

2.定義乙個陣列型別

typedef int (myarray)[10];

myarray a;

上面這兩句的含義和:

int a[10];

作用是相同的。

3.定義乙個陣列指標:

typedef int (*mypayyar)[10];  //myparray是指向一維陣列的指標資料型別

myparray pa; //pa的步長是sizeof(int)*10=40  //pa是指向一維陣列的指標變數

//pa是乙個指向一維陣列的指標(相當於乙個二級指標),要讓它指向一維陣列int a[10],應該這麼寫:

pa = &a //注意:pa的步長和&a的步長是相等的,都是40,而a的步長是4,所以不可能是pa = a。可以參考一下int* p=null;int b=10;p=&b;陣列指標的操作和對元素指標的操作是類似的。

當然,也可以直接定義乙個指向一維陣列的指標變數:

int (*pb)[10];  //pb就是乙個指向包含10個int元素的一維陣列的指標變數,pb的步長是40

pb=&a;

C中關於陣列的一些問題

int arr 4 這裡的4必須是乙個常量常量定義方式有 1.巨集定義 define size 4 此時可以使用為 int arr size 2.列舉 enum size 3.const修飾 const int size 4 此時的const修飾的常量不可以用作陣列的常量表示式!這是因為c語言本身並...

C 指標的一些問題Mark

翻了下以前的blog,兩年以前的了。當時還說每天練一點,慢慢熟悉,簡直 雙重指標 p 假如我有乙個m n維的陣列array,想要對應到指標p q r上去 int array m n int p n int q int r m r m 好理解,r是乙個m元的陣列,每個元素是乙個指標。指標 p和陣列p到...

C 中與指標相關的一些問題

指向常量的指標型別 與 指標型別的常量 const int p null 定義了指向常量的指標型別 int x 0 定義變數x int y 0 定義變數y p x ok,讓p指向變數x p 1 error,不能改變指向常量的指標所指位址中的值 int const q y 定義了常量指標q,並讓其指向...