1樓:第五靜白尚惜
不是。這麼說吧,陣列名本身就是指標,指向陣列的第一個元素。
至於你所說的呼叫呼叫二級(二維吧)陣列,難道不是如普通變數般直接呼叫嗎?
根據問題補充說,這是不允許的,main()函式的形參是固定的不能傳遞指標。而一般的自定義函式只能用傳遞首地址的形式來傳遞二維陣列,例子如下:
定義:int
a[x][y];
intfunc(int
*p,int
x,inty)
呼叫:func(a,3,3);
這種通過計算地址方法呼叫相當麻煩。。可以考慮將陣列定義在結構中,再將結構進行形參傳遞,當這樣會降低效率。例子如下。
#include
typedef
structte;
tetest;
intfunc(te
a,intx,inty)int
main()
c語言二維陣列
2樓:匿名使用者
int a[m][n];/就表示一個m行n列的整型二維陣列。
在c語言中陣列的下標是從0開始的所以,陣列a的元素個數可以表示為:a[0][0]-a[m-1][n-1]
例如:#include
int main()
return 0;
執行結果:
3樓:摯愛
例如對整型二維陣列a[3][2]賦值方法一:在定義的同時賦值 int a[3][2]=;所有陣列元素均為0 方法二: int a[3][2]=;常規的賦值方法方法三:
int a[3][2]=,分行的賦值方法方法四: int a[3][2]=,部分賦值方法,第一行元素的值分別為1,2,第二行元素值都是0,第三行第一個元素值為3,第二個元素值為0 方法五: int a[3][2];/先定義 for(i=0;i<=3;i++)用雙重for迴圈賦值,i,j表示二維陣列下標 for(j=0;j<=2;j++)scanf("%d",&a[i][j]);希望對你有所幫助。
4樓:銀雯
定義的時候int a[3][2]代表三行兩列的整型陣列。
使用的時候是迴圈不到a[3][2]的,三行兩列的整型陣列最多可以訪問到a[2][1],因為陣列下標是從0開始的,切記不要越界哦~
5樓:看見什麼吃什麼
樓主,c語言定義陣列後要再像你這樣賦值只能逐個賦值或者採用迴圈的方法了。
c語言就是這樣。因為定義完陣列後,第一a[3][4]並不代表一個陣列,第二陣列中沒有這個元素。(越界)
6樓:葛聖孫秀華
*s這個應該是指標陣列,裡面存著的都是指標。也就是記憶體的地址。(*s)這個是普通陣列。
strcpy(s[i],str+i*5);
//這句就是複製字串,就是吧s[i]覆蓋到str+i×5位置。
7樓:井甘集林楠
二維陣列簡單的說,就好比10只母豬,沒只母豬又生n只小豬,組成的陣列。
8樓:1024程式設計師
c語言陣列之二維陣列。
c語言二維陣列
9樓:電子科技小百科
1、首先是定義一個二級指標和行列變數【int **array,row,column;】。
3、接下來就可以為其開闢一個一個一維裝著一維陣列的陣列。
4、接下來使用【array[i]=(int *)malloc(sizeof(int)*column);】為陣列再次產生一個新的裝著陣列的陣列。
10樓:
auto int a[8][8];
那麼a[2]就相當於一個一維陣列名,那麼a[2]的數值等於&a[2][0]是沒什麼疑問的。
陣列名本身代表陣列的首地址,那&a[2]是怎麼回事呢,早期的c編譯器會認為這是非法的,但是從語義上講,對一個陣列物件取地址沒什麼不合理的,於是c99開始允許對陣列名取地址,相當於把該陣列維數提升了1級,在這個例子裡a[2]的型別是int*, a[2]的型別是int(*)8];,就是說a[2]和&a[2]數值上是相同的,但含義不同,&a[2]的型別和a相同的(提升了一級)
11樓:145飛雪
&a[2]是二維陣列第2行首地址(由0開始),這是因為把二維陣列看作是「一維陣列」,該「一維陣列」的每個元素又是一個一維陣列。&a[2]就是這種情況下「一維陣列」第二個元素的地址,這個第二個元素實際上是一個一維陣列。
&a[2][0]是二維陣列第2行第0列元素首地址。
所以二者相同。
12樓:一崽
定義的陣列,其中,a[2]表示int型別的值。&a[2]表示該值的地址,也就是該行的起始地址。
樓主的第二條語句感覺是錯的。。程式中還是不要用的好。
13樓:
行首地址和該行首元素地址相同。
14樓:1024程式設計師
c語言陣列之二維陣列。
求教c語言二維陣列的氣泡排序法?
15樓:浪小客
1、開啟visual studio工具並建立一個新的win32程式。
2、在開啟的c語言檔案中,匯入空間,然後專準備一個main函式。屬。
3、接下來,準備一個需要進行氣泡排序的整數陣列。如下圖所示,陣列中數字的順序是不正常的。
4、接下來,準備變數,準備好的變數用於對互動資料進行排序。
5、然後我們準備兩個for迴圈陣列,我們需要注意外迴圈和內迴圈。
16樓:匿名使用者
#include""
void main()
; int i,j,k,s;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
for(i=0;i<4;i++)
printf(""
}這是來。把沒一行都源。
用冒泡法排列,我。
在寫一個把整個二維陣列集體排序的。
17樓:匿名使用者
#include
int main()
; int i,j;
int b[4*5];
int k=0;
for(i=0;i<=3;i++)
}for(i=0;i<4*5-1;i++)for(j=i+1;j<4*5;j++)if(b[i]容易些(能貼上複製,還能中文),且程式設計的其他東西沒有任何變化。
c語言中,用一維陣列排序十個整數,怎麼做
18樓:幻翼高達
需要準備的材料分別有:電腦、c語言編譯器。
1、首先,開啟c語言編譯器,新建一個初始。cpp檔案,例如:。
2、在檔案中,輸入c語言**:
int a[10] =
std::sort(a, a + 10);
for (int i = 0; i < 10; i++)printf("%d ",a[i]);
3、編譯器執行檔案,此時成功將一維陣列的10個整數進行了排序。
19樓:問明
#include
int main()
int i,j,min,t,a[10]=;
printf("排序前的序列為:")
for(i=0;i<10;i++)輸出排序前的序列printf("%5d",a);
printf(""
for(i=0;i<9;i++)
min=i;//把每次迴圈的第一個數作為最小值for(j=i+1;j<10;j++)
if(a[min]>a[j])
min=j;//交換。
if(min!=i)//說明第一個數不是最小數,所以將a[i+1]~a[10]中最小值與a對換。
t=a[min];
a[min]=a;
a=t;printf("排序後的序列為:")
for(i=0;i<10;i++)輸出排序後的序列printf("%5d",a);
printf(""
return 0;
如何用c語言的qsort對二維陣列排序? 30
20樓:李磊
建議你這樣試試看:
先定義陣列大小:
然後定義一個陣列比較函式:
注意事項:更安全的呼叫方式為qsort_s;
然後呼叫 qsort函式進行排序,具體邏輯如下:
**合併如下:
這裡只是根據你的資料生成了二維陣列,可以根據你的具體情況進行調整;另外,關於qsort函式的用法,參考:qsort
關於比較函式的返回值,這裡有一個表:
最後,以上**的執行結果如下:
c語言二維陣列問題
21樓:喜羊羊
#include ""
int main()
int a[5][5]=,int b[5][5]=,int i,j;
printf("a陣列:")
for (i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%3d ",a[i][j]);
printf(""
printf("b陣列:")
for (i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%3d ",b[i][j]);
printf(""
for (i=0;i<5;i++)
b[i][0]=a[4][i];
b[i][4]=a[0][i];
printf("變化後的b陣列:")
for (i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%3d ",b[i][j]);
printf(""
return 0;
C語言陣列下標越界問題,C語言二維陣列下標越界問題
光輝歲月 首先 陣列下標是從0開始的 所以a 的下表是從0 9的,即a 10 a 9 是錯誤的。a指的是a 9 後面的那個儲存單元的的數值。其次 void fun int a,int n,int m 這個j是多餘的。 void fun int a,int n,int m 第一個括號是全形的括號!還有...
C語言中二維陣列中指標的問題,C語言中二維陣列中指標的問題
假若定義 int a 10 int p a 那麼p指向a陣列的首地址 若想要找到a 3 則 p 4 這你看到了嗎?首地址 相當於此陣列的名字。因為陣列元素在記憶體中是連續的 邏輯上 所以 知道了首地址就知道了這個陣列所有元素的位置二維應該同理 我也是初學。只能這麼告訴你。但願我的描述是正確的。 a ...
關於C語言定義二維陣列的問題,c語言關於定義二維陣列的問題
以下能正確定義二維陣列的是 以下能正確定義 陣列的是 去掉二維兩字 a int a 3 語法錯,沒帶初始化,不允許用 空白 不允許 陣列大小不定。b int a 正確定義了陣列,是一維陣列,陣列元素只有1 個,初始化數值為 2 3 就是 6。c int a 3 語法錯,花括號裡沒填初始化數值。d i...