C 034 指標與一維陣列

2021-07-08 13:52:17 字數 1123 閱讀 1256

陣列像乙個指標:訪問陣列中元素,使用陣列與使用指向這個陣列的指標是等價

num[1] ==== p[1]

num+1 ==== p + 1;

num[1] 的本質 *(num + 1)

指標 + 整數 ***** 指標中的值 + sizeof(所指向的資料型別) * 整數

陣列不是乙個指標

1、sizeof(array) != sizeof(pointer):當乙個陣列賦值乙個指標變數的時候,那麼陣列中有些資訊就丟失了,比如陣列長度,這種現象指標資訊遺失

2、指標的指向是可以改變的,陣列的指向是不可以改變

3、array == &array 陣列名就是陣列位址,pointer != &pointer : 指標所指向位址不是指標本身位址

void test();

int *p = num;//陣列名就是乙個位址,所以不用加&

//指向同乙個地方,列印2,2,2,2,2

printf("%d,%d,%d,%d,%d\n",num[1],p[1],*(num + 1),*(p + 1),*(++p));

}int main(int argc, const char * argv) ;

int *p = num;

p = num;

printf("%d\n",*p);//列印1

//nums = nums + 1;陣列的指向是不能改變的

p = num + 1; //指標的指向可以改變,指向下標為1的元素 = 2

printf("%d\n",*p);//列印2

printf("%lu,%lu\n",sizeof(num),sizeof(p));//陣列位元組20,指標位元組8

printf("%p\n",num);//列印0x7fff5fbff780

printf("%p\n",&num);//列印0x7fff5fbff780 陣列名就是陣列位址

printf("%p\n",p);//列印0x7fff5fbff784 指向的位址 因為前面p = num + 1,所以指向num[1]的位置=2

printf("%p\n",&p);//列印0x7fff5fbff768 指標的位址

return 0;

}

16 指標與一維陣列

指標在很多時候是與陣列緊密相關的,因為陣列元素的位址通常是連續的,這為指標的操作提供了方便。1 陣列元素的位址關係 一維陣列的名字實際上就是指向這個陣列的第乙個元素的指標,也就是這個陣列的起始位址。例如 int a 3 int p1 a int p2 a 0 a 既是陣列的名字,也是整個陣列 a 的...

C 035 指標與二維陣列

指標和二維陣列的關係有點繞,需要細細分析。通過 的方式,列印位址去理解。1.定義乙個指向一維陣列的資料的指標 格式 資料型別 指標變數名稱 陣列名稱 一維陣列的下標 2.定義乙個指標的陣列 格式 資料型別 指標變數名稱 指標個數 3.定義乙個指向一維陣列的指標 格式 資料型別 指標名稱 所指向的一維...

C 開篇(四) 指標陣列與陣列指標

1 指標陣列與陣列指標的區別?1 指標陣列 每個元素為乙個指標 指標陣列 int p int array 10 2 陣列指標 指向陣列的指標 陣列指標 int int array p 10 說明 根據這個規則,看第一優先的符號,比如指標陣列,最大的是,所以是陣列 陣列指標,最大的是 所以是指標。2 ...