如何將2d數組的行復制到1d數組?將2d數組的行復制到1d數組
我相信我所做其分配像前:
int x,y;
scanf("%d%d", &x,&y);
int one[x];
int two[y][x];
one=two[0];
但現在它給我的錯誤:
不兼容的類型分配
編輯:
好吧,我的壞。 我忘記了我不能以這種方式複製數組,但我可以傳遞2d數組的單行函數作爲參數。解決了。
如何將2d數組的行復制到1d數組?將2d數組的行復制到1d數組
我相信我所做其分配像前:
int x,y;
scanf("%d%d", &x,&y);
int one[x];
int two[y][x];
one=two[0];
但現在它給我的錯誤:
不兼容的類型分配
編輯:
好吧,我的壞。 我忘記了我不能以這種方式複製數組,但我可以傳遞2d數組的單行函數作爲參數。解決了。
您試圖從2維數組分配到1維數組!您將不得不遍歷二維數組並選擇每個單獨的值並插入一維數組中。
你不能這樣做
one=two[0]; // Illegal assignment in C
數組名稱是不可修改的左值。它不能是賦值運算符=
的左操作數。您可以這樣做,因爲
one[x] = two[y][x];
只需使用此代碼:
int col,rowToCopy=0;
for(col=0;col<x;col++){
one[col]=two[rowToCopy][col];
}
看來,這是不能接受的(我不能完全肯定 - 我會更好看)。
該語言的語義是,對於一維數組,數組的名稱是指向數組元素類型的指針,以及指向第一個元素的指針。 在你的情況下,數組只是一個類型(int *)的指針。
任何(int *)我們都可以應用[]括號。 這些括號正如我已經檢查過的,只是將方括號內的數字添加到指針(使用指針算術)並對指針應用取消引用。 解釋換句話說:所以在這個願景
int *p;
p[nn] is equivalent to *(p+nn);
具有代碼波紋管:
int a[8],b[8];
a=b;
做A = B只能指針的內容複製B向指針。 但是因爲數組是一個常數指針,不可能改變,這是不可能的。 所以上面的代碼會報錯; 任何方式,如果可能的話,它會複製數組b開始的地址到指針a。 而且,任何方式都不是你所需要的或你期望的。
這就是C對待數組的方式(感謝我強迫我思考)。
在大小是固定的,我會做這樣的情況:
typedef struct{int arr[0x4];}S;
S a,b;
a=b;
爲了訪問數組,你應該使用:a.arr []和b.arr []
在如果你需要一個數組數組,它可以很容易地擴展到你的情況。
問題是,在你的情況下,大小是動態的。
唯一的簡單的解決方法是使用:
memcpy(a,b,sizeof(a));
這已複製B的影響到你所需要的。其他解決方案更復雜。
下面的代碼可以解決你的問題:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int i,row,col,col1;
char value1[10][4]={};
char *value2;
value2 = new char[40];
/** Creating a 2D char array ***/
for(i=0;i<8;i++)
{
strcpy(value1[i],"MK,");
}
value1[7][strlen(value1[7])-1]='\0';
/*** Printing the 2D array ****/
for(i=0;i<8;i++)
{
cout<<"\n\n value1[i]="<<value1[i];
}
/*** assigning the 2D array value1[][] to string value2 **/
col1=0;
for(row=0;value1[row][0]!='\0';row++)
{
for(col=0;value1[row][col]!='\0';col++)
{
*(value2+col1) = value1[row][col];
col1++;
}
}
*(value2+col1)='\0';
/** assignment done ***/
cout<<"\n\nSize of rows="<<row<<"\n\nSize of Column="<<col;
cout<<"\n\nvalue1="<<value1[0];
cout<<"\n\nValue2="<<value2;
return 0;
}
,做他如何插入二維數組值1D? – haccks
one [x] = two [y] [x] from your answer :)。遍歷二維數組並選擇正確的索引值並插入一維數組中。 – Siva