在C語言中,指針數組是一個存儲指針的數組。每個元素都是一個指針,這些指針可以指向相同或不同類型的數據。指針數組的理解主要涉及到以下幾個方面:
聲明和初始化: 指針數組的聲明和初始化有多種方式。例如:
int *ptr_array[5]; // 聲明一個包含5個int指針的數組
int *ptr_array[5] = {NULL, &var1, &var2, &var3, &var4}; // 初始化一個包含5個int指針的數組,其中4個指針分別指向變量var1、var2、var3和var4
指針數組的訪問: 要訪問指針數組中的元素,可以使用數組索引。例如:
int var1 = 10;
int var2 = 20;
int var3 = 30;
int var4 = 40;
int *ptr_array[5] = {&var1, &var2, &var3, &var4, NULL};
printf("Value of var1: %d\n", *ptr_array[0]); // 輸出:Value of var1: 10
printf("Value of var2: %d\n", *ptr_array[1]); // 輸出:Value of var2: 20
printf("Value of var3: %d\n", *ptr_array[2]); // 輸出:Value of var3: 30
printf("Value of var4: %d\n", *ptr_array[3]); // 輸出:Value of var4: 40
指針數組作為函數參數: 指針數組可以作為函數的參數,實現傳遞指針數組的功能。例如:
void print_int_array(int *arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", *(arr[i]));
}
printf("\n");
}
int main() {
int var1 = 10, var2 = 20, var3 = 30, var4 = 40;
int *ptr_array[4] = {&var1, &var2, &var3, &var4};
print_int_array(ptr_array, 4); // 輸出:10 20 30 40
return 0;
}
指針數組與二維數組的關系: 在某些情況下,指針數組可以與二維數組相互轉換。例如,可以將二維數組的行地址存儲在指針數組中,或者將指針數組的元素作為二維數組的列地址。
總之,C語言中的指針數組是一種非常有用的數據結構,可以幫助我們更好地管理和操作內存。