C语言数组指针VS指针数组
简而言之,数组指针是一个指针,指针数组是一个数组。
1.数组指针:数组名称就是一个指向数组中第一个元素的常量指针,使用数组名作为常量指针是合法的,如下代码所示:
#include<stdio.h>
int main(){
int array[3] = {10, 20, 30};
printf("数组名称指向的地址值为%d\n", array);
printf("数组第一个元素值为%d\n", *array);
return 0;
}
结果为:
数组名称指向的地址值为6487568
数组第一个元素值为10
2.指针数组:数组中的每一个元素都是一个指针,如下代码定义了一个指向整数的指针数组:
#include<stdio.h>
int main(){
int var[3] = {10, 20, 30};
int *ptr[3]; // 定义指针数组
for (int i=0; i<3; i++){
ptr[i] = &var[i]; // 将var数组每个元素的地址赋值给ptr数组
printf("ptr[%d] = %d\n", i, ptr[i]); // 打印ptr数组保存的地址值
}
return 0;
}
结果如下:
ptr[0] = 6487552
ptr[1] = 6487556
ptr[2] = 6487560