1. 程式人生 > >強化C陣列作為函式引數-多維陣列的本質

強化C陣列作為函式引數-多維陣列的本質

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//多維陣列的本質就是一個指標陣列,由於多維陣列高於3級的基本上沒有多大的意義
//如果非要做3級以上的話,就是對二級的資料進行修改
int printf_array01(char (*array)[30],int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("s = %s\n", array[i]);
	}
	return 0;
}

void printf03(int *pArray,int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("數字 = %d\n", pArray[i]);
	}
}

void printf04(int (*array)[4],int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("數字1 = %d\n", (*array)[i]);//列印全部
	}

	//列印行
	for (int i = 0; i < 3; i++)
	{
		printf("數字2 = %d\n", *array[i]);//列印首元素
	}

	//列印首元素的地址
	for (int i = 0; i < 3; i++)
	{
		printf("地址一 = %x\n", array[i]);//列印首元素地址
		printf("地址二 = %x\n", &array[i]);//列印首元素地址
	}
}

int main()
{
	char a[10][30] = { "sanzhixiong", "iloveyou","haha"};
	printf_array01(a, 3);
	
	int b[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
	printf03(b,12);
	printf04(b, 12);
	system("pause");
	return 0;
}
通過以上的例子,大家可以看到就是一個二維陣列本質就是等價於型別 (*)[個數的長度] 這裡的個數的長度就是列的長度這麼理解就可以,希望對大家有幫助,我不是一個特別會寫作的程式,只是把總結出來的東西以程式碼的形式加上注視讓他看起來更簡單,由於本人的水平有限,有問題的話大家給我留言一起討論。