首先,我想知道它是否可行。如果是这样,请检查我的代码并告诉我哪里出了问题。
int m[n]; // this is where I pass the values to a array
for(int i=0;i<n;i++) {
scanf("%d",&a);
m[i]=a;
}
int v[n][b]; // this is where I pass the values from a array to a 2d array
for(int i=0;i<n;i++) { // but for some reason it doesnt work
for(int j=0;j<b;j++) {
v[i][j]=m[i];
}
}
}
输出是: 像这样
v[0][0]:0
v[0][1]:0
v[1][0]:1
v[1][1]:1
....
但我想要这样的东西:
v[0][0]:0
v[0][1]:1
v[1][0]:2
v[1][1]:3
不重复值
P.S- 如果我需要使用指针,你也可以这样解释我,但我更喜欢第一个。
最佳答案
在分配给 v[i][j]
时,您不断地重新分配 m[i]
中的任何值。
改为尝试:
v[i][j] = m[i*n + j];
这仅在数组 m
具有 n*b
元素时有效。
i*n
代表您正在处理的行,j
是列。反之亦然,这取决于您的想象。
关于在不使用指针的情况下将数组转换为多维 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958028/