1. 程式人生 > >C語言----(二維陣列,複雜資料型別的判斷)

C語言----(二維陣列,複雜資料型別的判斷)

一、二維陣列的定義賦值1、定義一個三行四列的二維陣列,如下:
int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int brr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//陣列arr與brr的初始化相同,但最好使用brr

int crr[3][4] = {1,2,3,4,5}; 
//行優先,即第0行元素分別為1、2、3、4,第1行第一個元素為5,其餘元素均為0

int drr[][4] = {1,2,3,4,5,6,7,8,9,10};
//第一個[ ]裡預設為3,第二個[ ]裡的4不能省
注:如果對全部元素都賦初值(即提供全部初始資料),則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。
2、輸出陣列brr[3][4]的值,程式碼如下:
#include <stdio.h>

int main()
{
	int brr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	for(int i=0; i<3; i++)
	{
	   for(int j=0; j<4; j++)
	   printf("%d ",brr[i][j]);
	   printf("\n");
	}
	return 0;
}
3、int brr[3][4];   brr表示陣列的第0行;   brr + 1表示陣列的第1行;   brr[1] 相當於 &brr[1][0];  可以理解為:二維陣列其實是一個包含陣列的陣列, 即陣列的每一個元素還是一個數組。
二、複雜資料型別的判斷簡單例子如下:
//定義一個一維陣列
int arr[4];
                               //此列表示型別
arr //陣列首元素的地址            int *
arr + 1                           int *
arr[1]                            int
arr[1] + 1                        int

//定義一個二維陣列
int brr[3][4];

brr                               int (* brr)[4] //陣列指標
brr + 1                           int (* brr)[4] 
brr[1]                            int *
brr[1] + 1                        int *
brr[1][1]                         int
brr[1][1] + 1                     int
1、資料型別的判定對於複雜的資料型別,先看優先順序。
為了幫助理解,簡單例子如下: int (*p) [4]             陣列指標(陣列的指標) int  *p [4]              指標陣列(儲存整型指標的陣列) int (*p) ()               函式指標 (指向函式的指標) int *p ()                 指標函式(返回指標的函式)2、判斷資料型別的方法①確定它的屬性(是否為陣列、指標、函式等),挑選優先順序最高的屬性;

②如果指標,考慮指向的內容;

③如果是陣列,考慮長度跟型別;

④如果是函式,考慮引數列表和返回值。