1. 指针数组的定义
指针数组是数组,其元素为指针。定义格式为 数据类型 *数组名[数组大小] 。例如,定义一个能存放5个指向 int 类型数据的指针数组:
c
int *ptrArray[5];
2. 初始化
- 方式一:直接初始化
c
int num1 = 10, num2 = 20;
int *ptrArray[] = {&num1, &num2};
- 方式二:动态初始化
c
int num1 = 10, num2 = 20;
int *ptrArray[2];
ptrArray[0] = &num1;
ptrArray[1] = &num2;
3. 访问指针数组元素
通过指针数组访问其指向的数据,示例如下:
c
#include <stdio.h>
int main() {
int num1 = 10, num2 = 20;
int *ptrArray[] = {&num1, &num2};
for (int i = 0; i < 2; i++) {
printf("Value at ptrArray[%d] is %d\n", i, *ptrArray[i]);
}
return 0;
}
4. 指针数组处理字符串
指针数组常用于处理多个字符串,每个指针指向一个字符串的首地址。示例:
c
#include <stdio.h>
int main() {
char *strings[] = {"Hello", "World"};
for (int i = 0; i < 2; i++) {
printf("String %d: %s\n", i + 1, strings[i]);
}
return 0;
}
5. 指针数组作为函数参数
指针数组可作为函数参数传递,函数可对其操作。例如:
c
#include <stdio.h>
void printStrings(char *strs[], int count) {
for (int i = 0; i < count; i++) {
printf("String %d: %s\n", i + 1, strs[i]);
}
}
int main() {
char *strings[] = {"Apple", "Banana"};
int count = sizeof(strings) / sizeof(strings[0]);
printStrings(strings, count);
return 0;
}
6. 动态内存分配与指针数组
c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n = 3;
char **ptrArray = (char **)malloc(n * sizeof(char *));
if (ptrArray == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < n; i++) {
ptrArray[i] = (char *)malloc(50 * sizeof(char));
if (ptrArray[i] == NULL) {
printf("内存分配失败\n");
for (int j = 0; j < i; j++) {
free(ptrArray[j]);
}
free(ptrArray);
return 1;
}
}
strcpy(ptrArray[0], "Red");
strcpy(ptrArray[1], "Green");
strcpy(ptrArray[2], "Blue");
for (int i = 0; i < n; i++) {
printf("Color %d: %s\n", i + 1, ptrArray[i]);
free(ptrArray[i]);
}
free(ptrArray);
return 0;
}
上述代码先为指针数组分配内存,再为每个指针指向的字符串分配内存,使用完后释放内存以防止内存泄漏。
标签:ptrArray,num1,int,C语言,char,数组,指针 From: https://blog.csdn.net/2301_81152393/article/details/144983280