二維數(shù)組為什么只能省略行 c語言的數(shù)組的中括號中數(shù)字能否省略?什么時候可以省略?
c語言的數(shù)組的中括號中數(shù)字能否省略?什么時候可以省略?定義數(shù)組時,請同時初始化它。括號中的數(shù)字可以省略。例如,int a[]={1,2,3,4,5}數(shù)組的大小是5,范圍是a[0]到a[4]。但是,如果
c語言的數(shù)組的中括號中數(shù)字能否省略?什么時候可以省略?
定義數(shù)組時,請同時初始化它。括號中的數(shù)字可以省略。例如,int a[]={1,2,3,4,5}數(shù)組的大小是5,范圍是a[0]到a[4]。但是,如果要定義一個長度為10的數(shù)組,而只初始化前五個數(shù)據(jù),則必須帶上數(shù)字字,如:int a[10]={1,2,3,4,5}在這種情況下,一個數(shù)組中有10個數(shù)字,前五個是1到5,后五個是0
或者二維數(shù)組,行數(shù)可以省略,但列數(shù)不能省略,如int A[[4]={1,2,3,4},{5,6,7,8},{9,10,11,12}系統(tǒng)中的默認行數(shù)為3
另外,在形式參數(shù)中,可以省略一維數(shù)組的長度或二維數(shù)組中的行數(shù),如void fun(int A[],int A[]函數(shù)中,第一個參數(shù)是一維數(shù)組,只要實參數(shù)經過一維數(shù)組,就可以接收。它不需要同樣的長度。同樣,第二個參數(shù)只是一個列數(shù)為4的二維數(shù)組
關于以上三種情況,希望能對您有所幫助
這是因為每個數(shù)組元素的存儲距離都很近,而C/C等高級語言采用的是“行優(yōu)先存儲”的方法,即,首先將元素存儲在同一行上,然后在行尾存儲下一行。因此,一行中的幾個元素不能省略。在定義二維數(shù)組時,我們必須首先明確一行中有幾個元素。如果是三維數(shù)組,則必須同時指定行數(shù)和列數(shù)。只有“頁數(shù)”可以省略。
聲明二維數(shù)組并賦值時每行的列數(shù)可以不一樣么?
當二維數(shù)組用作參數(shù)時,必須指定所有維度或忽略第一維度,但不能忽略第二維度或更高維度的大小,這受編譯器原則的限制。實際上,編譯器處理數(shù)組的方式如下:
將數(shù)組int設置為a[M][n]。如果要訪問a[i][J]的值,編譯器的尋址方法是:]&A[i][J]=&A[0][0]i*sizeof(int)*N J*sizeof(int)//注意N是第二個維度的維度,因此可以省略第一個維度的維度,而不能省略其他維度的維度。
定義二維數(shù)組時,初始化它或忽略第一個維度。編譯器將根據(jù)您的初始化語句自動確定第一個維度。
下面是一個示例:][CPP]查看純拷貝
#include
#include
#include
int main()
{
char a[10][10
]memset(a,0,sizeof(a))
printf(%dn”,sizeof(a))
for(int i=0I
{
for(int j=0j
printf(%d”,[i][J])
}]系統(tǒng)(“暫停”
]返回0
}