在C語言中,指針數組是一個存儲指針的數組,每個元素都是一個指針。指針數組的應用廣泛,例如動態內存分配、字符串處理、二維數組等。下面是一些常見的應用場景和示例代碼:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
// 動態分配內存并存儲指針
int **ptr_array = (int **)malloc(n * sizeof(int *));
for (i = 0; i < n; i++) {
ptr_array[i] = (int *)malloc(sizeof(int));
printf("Enter element %d: ", i + 1);
scanf("%d", ptr_array[i]);
}
// 打印指針數組中的元素
printf("Elements of the pointer array:\n");
for (i = 0; i < n; i++) {
printf("%d ", *ptr_array[i]);
}
// 釋放內存
for (i = 0; i < n; i++) {
free(ptr_array[i]);
}
free(ptr_array);
return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
char *str_array[5] = {"Hello", "World", "C", "Pointer", "Array"};
// 打印指針數組中的字符串
printf("Strings in the pointer array:\n");
for (int i = 0; i < 5; i++) {
printf("%s ", str_array[i]);
}
// 釋放字符串數組中的內存
for (int i = 0; i < 5; i++) {
free(str_array[i]);
}
return 0;
}
#include <stdio.h>
int main() {
int rows = 3, cols = 4;
int **array_2d = (int **)malloc(rows * sizeof(int *));
// 分配內存并填充二維數組
for (int i = 0; i < rows; i++) {
array_2d[i] = (int *)malloc(cols * sizeof(int));
for (int j = 0; j < cols; j++) {
array_2d[i][j] = i * cols + j + 1;
}
}
// 打印二維數組
printf("2D Array:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array_2d[i][j]);
}
printf("\n");
}
// 釋放內存
for (int i = 0; i < rows; i++) {
free(array_2d[i]);
}
free(array_2d);
return 0;
}
這些示例展示了指針數組在不同場景下的應用。使用指針數組時,請注意正確分配和釋放內存,以避免內存泄漏。