C语言-指针二维数组

  • 2020-10-03
  • 0
  • 0

一、array表示什么?

指向包含五个元素的数组的指针

验证:

#include <stdio.h>
int main ()
{
	int array[4][5] = {0};
	printf("sizeof(int): %lu\n", sizeof(int));
	printf("array: %p\n", array);
	printf("array + 1: %p\n", array + 1);
	
	return 0;

}

二、*(array+1)表示什么?

*(array+1) == array[1]

验证:

#include <stdio.h>
int main ()
{
	int array[4][5] = {0};
	int i, j, k = 0;
	for(i =0; i < 4; i++)
	{
		for(j = 0; j < 5; j++)
		{
		array[i][j] = k++;
		}


	}

	printf("*(array+1): %p\n",*(array+1));
	printf("array[1]: %p\n", array[1]);
	printf("&array[1][0]: %p\n", &array[1][0]);
	printf("*(*(array+1)): %d\n",*(*(array+1)));
	
	return 0;

}

三、*(*(array+1)+3)表示什么?

*(array+1)+3 == &array[1][3]

验证:


#include <stdio.h>
int main()
{

	int array[2][3] = {{0,1,2},{3,4,5}};
	int (*p)[3] = array;
	pintf("**(p+1): %d", **(p+1));
	pintf("**(array+1): %d\n", **(array+1));
	pintf("array[1][0]: %d\n", array[1][0]);
	pintf("*(*(p+1)+2): %d", *(*(p+1)+2));
	pintf("*(*(array+1)+2): %d\n", *(*(array+1)+2));
	pintf("array[1][2]: %d\n", array[1][2]);
	return 0;
}

四、总结:

*(array+i) == array[i]

下标索引的形式可以用指针索引的形式表现

评论

还没有任何评论,你来说两句吧