在C语言中,指针数组是一个存储指针的数组,每个元素都是一个指针。指针数组的应用广泛,例如动态内存分配、字符串处理、二维数组等。下面是一些常见的应用场景和示例代码:
- 动态内存分配:
#include#include 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#include 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; }
- 二维数组:
#includeint 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; }
这些示例展示了指针数组在不同场景下的应用。使用指针数组时,请注意正确分配和释放内存,以避免内存泄漏。