指针数组是指针还是数组

指针数组是指针还是数组


指针数组是数组不是指针。
指针数组:就是存放指针(地址)的数组。

真是意义上还是一个数组,只不过通过这个数组便能访问到每个指针所指的数据

指针数组是指针还是数组_第1张图片
%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;
}

运行结果:
指针数组是指针还是数组_第2张图片
还可以通过数组指针去打印每个数组的每个元素

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;
}

指针数组是指针还是数组_第3张图片
就相当于模拟出来一个二维数组

真是的二位数组 arr1 arr2 arr3在内存中的位置是连续的
指针数组是指针还是数组_第4张图片

你可能感兴趣的:(c语言)