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 以只讀方...