C 指针数组
C 指针 C 指针
C 指针数组是一个数组,其中的每个元素都是指向某种数据类型的指针。
指针数组存储了一组指针,每个指针可以指向不同的数据对象。
指针数组通常用于处理多个数据对象,例如字符串数组或其他复杂数据结构的数组。
让我们来看一个实例,它用到了一个由 3 个整数组成的数组:
实例
#include<stdio.h>constintMAX = 3;
intmain(){intvar[] = {10, 100, 200};
inti;
for(i = 0; i < MAX; i++){printf("Value of var[%d] = %d\n", i, var[i]);
}return0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200
可能有一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。
下面是一个指向整数的指针数组的声明:
int *ptr[MAX];
在这里,把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。下面的实例用到了三个整数,它们将存储在一个指针数组中,如下所示:
实例
#include<stdio.h>constintMAX = 3;
intmain(){intvar[] = {10, 100, 200};
inti, *ptr[MAX];
for(i = 0; i < MAX; i++){ptr[i] = &var[i]; /* 赋值为整数的地址 */}for(i = 0; i < MAX; i++){printf("Value of var[%d] = %d\n", i, *ptr[i]);
}return0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200
您也可以用一个指向字符的指针数组来存储一个字符串列表,如下:
实例
#include<stdio.h>constintMAX = 4;
intmain(){constchar *names[] = {"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
inti = 0;
for(i = 0; i < MAX; i++){printf("Value of names[%d] = %s\n", i, names[i]);
}return0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali
再看一个简单实例,我们首先声明了一个包含三个整数指针的指针数组 ptrArray,然后,我们将这些指针分别指向不同的整数变量 num1、num2 和 num3,最后,我们使用指针数组访问这些整数变量的值。
实例
#include<stdio.h>intmain(){intnum1 = 10, num2 = 20, num3 = 30;
// 声明一个整数指针数组,包含三个指针int *ptrArray[3];
// 将指针指向不同的整数变量ptrArray[0] = &num1;
ptrArray[1] = &num2;
ptrArray[2] = &num3;
// 使用指针数组访问这些整数变量的值printf("Value at index 0: %d\n", *ptrArray[0]);
printf("Value at index 1: %d\n", *ptrArray[1]);
printf("Value at index 2: %d\n", *ptrArray[2]);
return0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Value at index 0: 10
Value at index 1: 20
Value at index 2: 30
指针数组在C中非常有用,特别是在处理具有不定数量元素的数据结构时,如动态分配的字符串数组或动态创建的结构体数组。
C 指针 C 指针