C 32 陣列指標和指標陣列分析

2021-09-13 01:44:48 字數 1865 閱讀 5097

思考: 下面這些宣告合法嗎?

int array[5];

int matrix[3][3];

int* pa = array;

int* pm = matrix;

例: int array[5] 的型別為 int[5]

陣列型別:

typedef int(aint5)[5]

typedef float(afloat10)[10]

陣列定義:

aint5 iarray

afloat10 ifloat

pointer 為陣列指標變數

type 為指向的陣列的元素型別

n 為指向的陣列的大小

#include typedef int(aint5)[5];

typedef float(afloat10)[10];

typedef char(achar9)[9];

int main()

for(i=0; i<10; i++)

printf("%p, %p, %p\n", &carray, pc+1, pcw + 1);

return 0;

}

編譯輸出:

char(*pcw)[4] = carray; ==> warning: initialization from incompatible pointer type

執行輸出:

20, 20

0.000000

1.000000

2.000000

3.000000

4.000000

5.000000

6.000000

7.000000

8.000000

9.000000

0xbff4e833, 0xbff4e83c, 0xbff4e837

分析:char(*pcw)[4] = carray; 陣列指標型別使用 char 型別指標初始化,編譯器告警

type* 為陣列中每個元素的型別

parray 為陣列名

n 為陣列大小

#include #include #define dim(a) (sizeof(a) / sizeof(*a))

int lookup_keyword(const char* key, const char* table, const int size)

{ int ret = -1;

int i = 0;

for(i=0; i

int lookup_keyword(const char* key, const char** table, const int size)

但這樣是不直觀的,降低了程式的可讀性

32 陣列指標和指標陣列分析

指標的本質是變數,其記憶體中儲存的值是另乙個變數或常量的記憶體位址。int array 5 int matrix 3 3 int pa array int pm matrix 合法,第乙個為標準陣列的定義,第二個為二維陣列的定義,第三個為指向陣列的指標,第四個為指向二維陣列的指標。問題 1 arra...

C語言學習筆記19 陣列指標和指標陣列分析

在c語言中 c語言中通過typedef為陣列型別重新命名 typedef int aint5 5 重新命名 aint5 iarray 定義 typedef float afloat10 10 重新命名 afloat10 farray 定義 注 pointer為陣列指標變數名 type為指向的陣列的元...

指標和陣列分析(上)

陣列是一段連續的記憶體空間 陣列的空間大小為sizeof arrary type arrary size 陣列名可看做指向陣列第乙個元素的常量指標 a 1的意義是什麼?結果是什麼?指標運算的意義是什麼?結果又是什麼?1 include 2 intmain 3 5int p null 6 printf...