《C语言进阶》使用指针花式打印数组内容

本文将介绍几个打印数组内容的方法,其中会涉及到指针的应用,方便加深大家对指针的理解。

int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int sz = sizeof(arr) / sizeof(arr[0]);

	//print1(arr, sz);
	//print2(arr, sz);//打印arr数组的内容
    //print3(&arr, sz);
	return 0;
}

首先我们创建一个数组,然后使用编写不同的函数来实现打印数组的不同方法。

方法1:也是我们最常见的方法,直接在函数参数中使用数组

void print1(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
}

方法2:原理跟方法1一样,但这次函数参数我们使用指针,将数组首元素地址传过去

void print2(int* arr, int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *(arr + i));
	}
}

方法3:使用数组指针的方式,我们将整个数组地址存在一个数组指针中,将整个数组地址作为参数调用,注意!!在此方式中我们也可以有不同的方法来打印数组

void print3(int (*parr)[10], int sz)
{
	//*(parr + 0);//parr[0]+
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		//printf("%d ", parr[0][i]);
		//printf("%d ", (*(parr + 0))[i]);
		printf("%d ", (*parr)[i]);//(*parr) 相当于 parr指向的数组的数组名
	}
}

进阶

我们尝试使用不同方法来打印二维数组,同样的我们先创建一个二维数组,再在不同函数中实现不同方法打印数组。

int main()
{
	int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6,3,4,5,6,7 };
	print1(arr, 3, 5);
	print2(arr, 3, 5);
	return 0;
}

方法1:跟传统方法一样,我们在形式参数中使用一个二维数组

void print1(int arr[3][5], int r, int c)
{
	int i = 0;
	for (i = 0; i < r; i++)
	{
		int j = 0;
		for (j = 0; j < c; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
}

方法2:我们使用数组指针的方式,将数组首元素地址传给int (*p)[5],形成一个二维数组

void print2(int(*p)[5], int r, int c)
{
	int i = 0;
	for (i = 0; i < r; i++)
	{
		int j = 0;
		for (j = 0; j < c; j++)
		{
			//printf("%d ", *(*(p + i) + j));
			printf("%d ", p[i][j]);
		}
		printf("\n");
	}
}

本文到此结束,感谢大家的阅读,欢迎点赞评论互关,祝大家万事如意。

你可能感兴趣的:(《C语言进阶》,c语言,开发语言,后端)