索引法和指標法訪問陣列
阿新 • • 發佈:2019-02-14
訪問陣列有兩種形式:
1. 通過陣列名和索引組合訪問陣列元素
2. 通過指標變數運算元組元素,陣列中各個元素在記憶體中都是相鄰排列的,
相鄰元素的地址只相差一個元素的字長,所以可以通過一個數組元素型指標
加上要訪問陣列元素的地址偏移量即可獲取該元素地址,根據地址就能獲取對應記憶體的值。
eg:
#include <stdio.h> #define SIZE 10 int main(void){ char a_ch[SIZE] = "student"; /* 定義並初始化a_ch */ int a_int[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; /* 定義並初始化a_int */ /* 定義並初始化兩個陣列元素型指標 */ char * p_ch = a_ch; char * p_int = a_int; printf("a_ch[4] = %c, a_ch[3] = %c\n", a_ch[4], a_ch[3]); /* 使用索引法輸出元素 */ printf("&a_ch[4] = %p, &a_ch[3] = %p\n", &a_ch[4], &a_ch[3]); /* 使用索引法輸出兩個元素地址 */ printf("&a_ch[4] - &a_ch[3] = %d\n", &a_ch[4]-&a_ch[3]); /* 使用索引法輸出兩個元素之間的地址偏移量 */ printf("a_int[4] = %d, a_int[3] = %d\n", a_int[4], a_int[3]); /* 使用索引法輸出元素 */ printf("&a_int[4] = %p, &a_int[3] = %p\n", &a_int[4], &a_int[3]); /* 使用索引法輸出兩個元素地址 */ printf("&a_int[4] - &a_int[3] = %d\n", &a_int[4]-&a_int[3]); /* 使用索引法輸出兩個元素之間的地址偏移量 */ /* 使用指標法輸出兩個元素的地址 */ printf("p_ch + 4 = %p, p_ch + 3 = %p\n", p_ch + 4, p_ch + 3); printf("p_int + 4 = %p, p_int + 3 = %p\n", p_int + 4, p_int + 3); /* 使用陣列名+地址偏移量組合訪問陣列元素 */ printf("%d\n", *(a_int + 2)); /* 等價於a_int[2]獲取的值 */ }
執行結果: