指针数组是指针还是数组
指针数组是数组不是指针。
指针数组:就是存放指针(地址)的数组。
真是意义上还是一个数组,只不过通过这个数组便能访问到每个指针所指的数据
%s打印字符串是只需要起始位置的地址(数组名)就可以。
int main() {
char arr1[] = "hello";
char arr2[] = "word";
char arr3[] = "haha";
char* arr4[] = { arr1,arr2,arr3 };//这里的arr4就是指针(地址)数组,
int i = 0;
for (i = 0; i < 3; i++) {
printf("%s\n", arr4[i]);
}
return 0;
}
运行结果:
还可以通过指针数组去打印每个数组的每个元素
int main() {
int arr1[] = {1,2,3,4,5};
int arr2[] = { 2,3,4,5,6 };
int arr3[] = { 3,4,5,6,7 };
int* arr4[] = { arr1,arr2,arr3 };//这里的arr4就是指针(地址)数组,
int i = 0;
for (i = 0; i < 3; i++) {
int j = 0;
for(j=0;j<5;j++){
printf("%d\n", arr4[i][j]);
//或者写成:
printf("%d\n",*( arr4[i]+j));
}
}
return 0;
}
就相当于模拟出来一个二维数组
真是的二位数组 arr1 arr2 arr3在内存中的位置是连续的