C 如何用fill初始化二維陣列

時間 2022-12-16 06:30:03

1樓:xz巨集定義

c++中用new動態建立二維陣列的格式一般是這樣:

type (*p)[n] =new type [n];

其中,type是某種型別,n是二維陣列的列數。採用這種格式,列數必須指出,而行數無需指定。在這裡,p的型別是type*[n],即是指向一個有n列元素陣列的指標。

還有一種方法,可以不指定陣列的列數:

int **p;

p = new int*[10]; 注意,int*[10]表示一個有10個元素的指標陣列。

for (int i = 0; i !=10; +i)

這裡是將p作為一個指向指標的指標,它指向一個包含10個元素的指標陣列,並且每個元素指向一個有5個元素的陣列,這樣就構建了一個10行5列的陣列。

當陣列使用完畢,釋放空間的**是:

for(int i = 0; i !=5; i++)

delete p;

處理二維陣列,可以用降維或是二維法。

降維法是用一位陣列來接受二維陣列,將二維元素的首地址&a[0][0]作為引數,傳遞給函式,函式用int *接受。

二維法就直接用二維陣列來接受,但是需要指定列數。

2樓:匿名使用者

double **array;

array = new double*[row];

for (int i = 0; i < row; +i)其中row為行數,col為列數。

c++ 二維陣列如何初始化為0

3樓:du瓶邪

#include

using namespace std;

int main()

cout<

c++ 也可以寫:

int a[10][8];

簡單的就是 :memset(a,0,sizeof(a));

4樓:匿名使用者

例如 int a[3][4];

a[0][0]='0'

這樣寫第一個元素初始化為0,其餘也會初始化為0還有一種就是。

memset(要初始化的陣列,初始化的值,要初始化的長度(位元組));

5樓:匿名使用者

for(int l=0;l<10;l++)原理如樓上所述,不贅述~~

c++當然可以直接定義多維陣列了,是c#不可以直接定義多維陣列。

6樓:網友

補充一下用memset函式要在開頭加上 #include

還有new了後面要delete

7樓:匿名使用者

貌似只能用1樓的方法。

8樓:匿名使用者

#include

using namespace std;

int main()

cout<} return 0;

} 參考程式。

c++ 也可以寫。

int a[10][8];

簡單的就是 :memset(a,0,sizeof(a));

9樓:

int **a=new int*[10]()加上() 將初始化為0

int **a=new int*[10]; 無初始化。

c++ 怎樣動態初始化有二維陣列的結構體

10樓:匿名使用者

結構體這裡。

struct mgraph

然後定義處。

mgraph *g = new mgraph();

對於網友採納答案的質疑:

不知道你是如何坦言「不能用「這三個字的?首先,c++中結構體和類唯一的區別在於預設的訪問許可權不同,其餘完全一樣。其次,int *p = new int(5),請問我的new新建的是類還是int型變數?

最後,既然用了c++,就不要在用malloc這種c語言的機制了。不知道不要裝。

最後對於網友採納的答案,附一段可編譯執行的**,質問關於new不能用於分配記憶體給結構體。

11樓:夜禮服假面

不能用new,new是對類的操作。

mgraph *g;

g = mgraph*)malloc(

sizeof(mgraph));

c++二維陣列的初始化

12樓:

這是個二維陣列,a[5][5]指的是有5行5列,第一個5指的是5行,也就是大括號裡面小括號的數量,第二個5指的是5列,也就是小括號裡陣列元素的數量。

13樓:滄海雄風

5個 a[5][5] 第一個5 是小括號個數 第二個5 是小括號內元素個數。

c++ 的二維陣列初始化

14樓:巢婧谷和

絕對錯了,不錯你扇死我!

二維陣列的初始化分為,一種為按行分段初始化,另一種為按行連續初始化。

inta[2][3]=,這是第一種,inta[2][3]=;

這是第二種。

a這個二維陣列一共2行3列共6個儲存空間,圖形為:5678910

正好佔滿。而且c語言預設可以省略行數,但不能省略列數你看看你的初始化。

inta[4]=,行數省略是沒有任何問題的。

但是你是按行分段初始化。

第一行003

第二行第三行0

10注意了,你只對其中3行進行了初始化,第4行丟了。

所以a是一個半初始化的陣列,c編譯系統絕對不承認!

15樓:匿名使用者

上面的**中最後少了};

另外陣列不能整體拷貝。只能通過下標逐個賦值。

16樓:匿名使用者

(1)iostream後面不加。h,(2)int n[3][3]=0有誤,不能對陣列進行這樣的初始化,應該是對陣列元素逐個賦值。

(3)int (*m)[3]=new int[3][3]; 前面不加int,加上的話,相當於在區域性對m重新定義。

初始化方法如下:

(1)int m[3][3];

for(int i = 0; i < 3; i++)for(int j = 0; j < 3; j++)m[i][j] =0;

(2)int **m = new int*[3];

for(int i = 0; i < 3; i++)3)int *m[3];

int **m = new int*[3];

for(int i = 0; i < 3; i++)第二種寫法和第三種寫法本質上一樣的,指向指標的指標其實就是指標的陣列。

怎樣動態建立二維陣列並初始化?c++ 【追加懸賞!】

17樓:匿名使用者

我貌似沒有明白a和t是什麼關係?我假設你說的a和t是同一個東西我嘗試幫你解決:

void get_v(const int m,const int n,float **p)//這裡傳入了一個指向二維陣列指標的指標(假設這個二維陣列名為base)

for(int i=0;ifor(int j=0;j...

c++靜態成員二維陣列的初始化問題

18樓:情依夢舊不能圓

別這麼初始化,一般是用 memset(arr,0,sizeof(arr));初始化陣列的。

你的提問應該改成:char c::arr[255][16] =你試一下吧。

19樓:匿名使用者

你這是啥?

class c

;//你這裡少個分號。

char c::arr[255][16]=;這樣沒有問題啊靜態資料成員實際上是類域中的全域性變數。而全域性變數的定義不應該在標頭檔案中,所以,靜態資料成員的定義(初始化)不應該被放在標頭檔案中。

20樓:德克and德華

static成員的初始化一般是在方法檔案(.cpp檔案)中,而不是在標頭檔案中,因為程式可能將標頭檔案包括在其他幾個檔案中。

如果在標頭檔案中進行初始化,將出現多個初始化語句副本,從而引發錯誤。

以上基本是c++ primer plus的原話,實際上,在我用過的兩個編譯器中,即使這個標頭檔案只被包括到一個檔案中,也會報錯,原因不詳,所以最好還是把初始化語句放在方法檔案(.cpp檔案)裡。

C二維陣列如何初始化為,C 二維陣列如何初始化為

du瓶邪 include using namespace std int main cout c 也可以寫 int a 10 8 簡單的就是 memset a,0,sizeof a 例如 int a 3 4 a 0 0 0 這樣寫第一個元素初始化為0,其餘也會初始化為0還有一種就是 memset 要...

C如何給double型二維陣列動態初始化

xz巨集定義 c 中用new動態建立二維陣列的格式一般是這樣 type p n new type n 其中,type是某種型別,n是二維陣列的列數。採用這種格式,列數必須指出,而行數無需指定。在這裡,p的型別是type n 即是指向一個有n列元素陣列的指標。還有一種方法,可以不指定陣列的列數 int...

c語言程式 定義二維陣列int m 3並初始化,完整題目如下

include int main void file fp 寫入操作 fp fopen data w 以只寫方式開啟檔案 fwrite m,sizeof m 1,fp 寫入資料 fclose fp 關閉檔案 開啟操作 int newm 3 3 int i,j fp fopen data r 以只讀方...