1. 程式人生 > >.使用malloc開闢一個3*4的二維陣列,並將內容初始化為0-11

.使用malloc開闢一個3*4的二維陣列,並將內容初始化為0-11

方法一·:

很容易聯想到使用指標陣列

<pre name="code" class="cpp">#define ROW  3
#define COL 4
void Test4()
{
	int(*p)[COL] = (int(*)[COL])malloc(sizeof(int)*ROW*COL); //注意是int(*p)[COL],<span style="color:#ff0000;">是COL不是ROW</span>
	for (int i = 0; i < ROW; ++i)
	{
		for (int j = 0; j < COL; ++j)
		{
			p[i][j] = i*COL + j;
		}
	}
	for (int i = 0; i < ROW; ++i)
	{
		for (int j = 0; j < COL; ++j)
		{
			printf("%d ", p[i][j]);
		}
	}
}


方法二:

使用二級指標,就像虛表指標與虛表一樣(注意C語言中不能直接返回一個二維陣列,也不能是一個數組指標,所以若要動態開闢一個二維陣列並返回,那麼只能通過這種方式)

void Test()
{
	int **p = (int **)malloc(sizeof(sizeof(int*)*ROW));
	for (int i = 0; i < ROW; ++i)
	{
		p[i] = (int *)malloc(sizeof(int)*COL);
	}
	for (int i = 0; i < ROW; ++i)
	{
		for (int j = 0; j < COL; ++j)
		{
			p[i][j] = i*COL + j;
		}
	}
	for (int i = 0; i < ROW; ++i)
	{
		for (int j = 0; j < COL; ++j)
		{
			printf("%d ", p[i][j]);
		}
	}
}