C經典 關於一維陣列指標

2021-07-11 13:17:00 字數 1024 閱讀 1728

說明:

1)一維陣列指標表示方法 int *p = a 而非 int *p = &a

也可int *p = &a[0]表示

2)p + 1 或a + 1表示的是指向下乙個位址

#include 

int main(int argc, const char * argv)

; printf("a[0] = %p\n",&a[0]);

printf("a[1] = %p\n",&a[1]);

printf("a[2] = %p\n",&a[2]);

//定義陣列指標,

int*p = a;//p = a

//取位址

printf("p = %p\n",p);//指向a[0];

printf("p + 1 = %p\n",p + 1);//p + 1指向a[1]; = 0x7fff5fbff874

printf("a + 1 = %p\n",a + 1);//a + 1指向a[1]; = 0x7fff5fbff874

//取內容

printf("*(p + 1) = %d\n",*(p + 1));//

*(p + 1)指向a[1]的值; =2

printf("*(a + 1) = %d\n",*(a + 1));//

*(a + 1)指向a[1]的值; =2

//printf("*p++ = %d\n", *p++);//=1;

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

//使用陣列指標遍歷陣列

int*pp = a;

for (int i = 0; i < 4; i ++)

printf("\n");

return

0;}

結論:

引用乙個陣列元素,可以使用二種方法:

1)下標法 ,a[i];

2)指標法,(a+1) 或 (p+1)

3) a是常量 (a++)錯誤, p是變數(p++)正確

一維陣列 指標

下標法 容易理解 元素 a i 指標法 推薦使用 元素 a i 因為編譯器將a i 解釋為 a i 需要時間,所以直接將a i 寫成 a i 可提高執行效率 下標法 元素 p i 指標法 元素 p i 都不是簡單的 1,1指的是1個記憶體單元 p p p 1,p的值改變了 p 1並沒有改變p的值 a...

C經典 指標陣列與二維陣列指標變數的區別

1.指標陣列 定義 int p n int p p表示多個指標 優先順序高,先與p結合成為乙個陣列,再由int 說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。這裡執行p 1是錯誤的,這樣賦值也是錯誤的 p a 因為p是個不可知的表示,只存在p 0 p 1 p 2 p n 1 而且它們分別是指...

C語言 指標和一維陣列

include void main void int a 5 int ptr int a 1 printf d n a printf d n a 因為a和 a的值是相等的,則 a不是指向指標的指標 printf d n a printf d n a 但是 a和 a的值是不相等,a和a的值是相同的,說...