『壹』 c語言二維數組怎麼表示

int a[m][n];//就表示一個m行n列的整型二維數組

在c語言中數組的下標是從0開始的所以,數組a的元素個數可以表示為:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>
intmain()
{
inta[3][2],i,j;//定義一個3行2列的整型二維數組a

for(i=0;i<3;i++)//依次給二維數組賦值
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf(" ");
for(i=0;i<3;i++){//輸出二維數組
for(j=0;j<2;j++)
printf("%d",a[i][j]);
printf(" ");
}
return0;
}
/*
運行結果:
12
34
45

12
34
45
*/

『貳』 c語言中二維數組如何使用

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

intmain()
{
inti,j,n=1;
inta[15][15];
//賦值
for(j=0;j<15;j++)
{
for(i=0;i<15;i++)
{
a[j][i]=n;
n++;
}
}

//輸出顯示
for(j=0;j<15;j++)
{
for(i=0;i<15;i++)
{
printf("%3d",a[j][i]);//%3d,3表示3按三個字元對齊
}
printf(" ");//顯示完一版行權換行
}
return0;
}

『叄』 為什麼C語言中二維數組的數組名a和*a表示的是同一個值

當定義二維數組a[M][N]時,數組名可以認為是二維指針,其指向二維數組的首地址。
於是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。
在二維數組中,所有元素都是緊密排列的,這樣整個數組的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。

『肆』 c語言二維數組如何定義字元串急。。。

二維字元數組的定義格式為:char 數組名[第一維大小][第二維大小];

例如:char c[3][10]; //定義了一個3行10列的二維字元數組c

由於該二維數組的每一行 c[0]、c[1]、c[2] 均是含有 10 個元素的一維字元數組,即二維數組的每一行均可表示一個字元串。

通常情況下,二維數組的每一行分別使用一個字元串進行初始化。 例如:

例如:char c[3][8]={{"apple"},{"orange"},{"banana"}};

(4)c語言中二維數組擴展閱讀

分析

字元串 "Apple" 的長度為 5,加上結束符 "" 共 6 個字元,前 5 個字元分別從 c[0] 行的首元素 c[0][0] 開始存放,到 c[0][4],第 6 個字元 '' 只能保存到 c[1] 行的首元素 c[1][0]。

字元串 "Orange" 的長度為 6,該字元串的前 5 個字元分別從 c[1] 行的首元素 c[1][0] 開始存放,到 c[1][4],第 6 個字元及結束符 '' 順序存到 c[2][0] 和 c[2][1]。

字元串 "Pear" 的長度為 4,該字元串的 5 個字元(包含 '')分別從 c[2] 行的首元素 c[2][0] 開始存放,到 c[2][4]。

『伍』 C語言中如何定義一個二維數組

int a[2][3];
a[0][0], a[0][1], a[0][2],
a[1][0], a[1][1], a[1][2]
表示兩行三列

『陸』 c語言中怎麼用二維數組作為函數參數

可以用二維數組名作為實參或者形參,在被調用函數中對形參數組定義時可以指定所有維數的大小,也可以省略第一維的大小說明,如:

void Func(int array[3][10]);

void Func(int array[][10]);

二者都是合法而且等價,但是不能把第二維或者更高維的大小省略,如下面的定義是不合法的:

void Func(int array[][]);

因為從實參傳遞來的是數組的起始地址,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多 少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:

void Func(int array[3][]);實參數組維數可以大於形參數組,例如實參數組定義為:

void Func(int array[3][10]);

而形參數組定義為:

int array[5][10];

這時形參數組只取實參數組的一部分,其餘部分不起作用。

對於數組 int p[m][n];

如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),編譯器是這樣定址的,它的地址為:

p + i*n + j;

void Func(int array[3][10]);

void Func(int array[][10]);

變為:

void Func(int **array, int m, int n);

在轉變後的函數中,array[i][j]這樣的式子是不對的(不信,大家可以試一下),因為編譯器不能正確的為它定址,所以我們需要模仿編譯器的行為把array[i][j]這樣的式子手工轉變為:

*((int*)array + n*i + j);

在調用這樣的函數的時候,需要注意一下,如下面的例子:

int a[3][3] =

{

{1, 1, 1},

{2, 2, 2},

{3, 3, 3}

};

Func(a, 3, 3);

根據不同編譯器不同的設置,可能出現warning 或者error,可以進行強制轉換如下調用:

Func((int**)a, 3, 3);

其實多維數組和二維數組原理是一樣的,大家可以自己擴充的多維數組,這里不再贅述。寫到這里,我先向看了這篇文章後悔的人道歉,浪費你的時間了。下面是一 個完整的例子程序,這個例子程序的主要功能是求一個圖中某個頂點到其他頂點的最短路經,圖是以鄰接矩陣的形式存放的(也就是一個二維數組),其實這個函數 也是挺有用的,但是我們這篇文章的重點在於將二維數組作為函數的參數傳遞。

『柒』 c語言中二維數組的定義

c語言中,要定義一個三行四列的int二維數組,可以採用以下的語句:
int a[3][4];

『捌』 C語言中一個二維數組 它的數組名是a 那a和*a有什麼區別

數據名可以看作指針常量,分配數組空間時指針值就確定下來了,不像聲明的指針變數那樣,值是不能改變的。*a=a[0],對於二維數組a[0]也是一個指針,他們都指向數組的首地址,值都相等,但是,a和a[0]雖然值相等,但對他們進行指針運算時,地址偏移的基礎不同。

『玖』 c語言中什麼是二維數組

二維數組的定義
二維數組定義的一般形式是:
類型說明符 數組名[常量表達式1][常量表達式2]
其中常量表達式1表示第一維下標的長度,常量表達式2 表示第二維下標的長度。例如:int a[3][4];
說明了一個三行四列的數組,數組名為a,其下標變數的類型為整型。該數組的下標變數共有3×4個,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

二維數組在概念上是二維的,即是說其下標在兩個方向上變化,下標變數在數組中的位置也處於一個平面之中,而不是象一維數組只是一個向量。但是,實際的硬體存儲器卻是連續編址的,也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數組,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。

在C語言中,二維數組是按行排列的。即,先存放a[0]行,再存放a[1]行,最後存放a[2]行。每行中有四個元素也是依次存放。由於數組a說明為int類型,該類型占兩個位元組的內存空間,所以每個元素均佔有兩個位元組。

『拾』 c語言中定義一個二維數組

int a[100][100]; //先把數組定義的大點
int n,m,i,j;
printf("請輸入行數:");
scanf("%d",&n);
printf("請輸入列數:");
scanf("%d",&m);
printf("請輸入%d行%d列數字\n",n,m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",a[i][j]);