C 有多少种方法可以打印整数数组的数组?
我可以这样声明整数数组的数组:C 有多少种方法可以打印整数数组的数组?,c,arrays,C,Arrays,我可以这样声明整数数组的数组: int dataA[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; 并按以下两种方式分别打印出阵列: #include <stdio.h> int main() { int dataA[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int i = 0; for (; i < 3; i++) {
int dataA[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
并按以下两种方式分别打印出阵列:
#include <stdio.h>
int main() {
int dataA[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int i = 0;
for (; i < 3; i++) {
int j = 0;
for (; j < 3; j++)
printf("%i,", dataA[i][j]);
printf(";");
}
puts("");
int dataB[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int *p = (int *) dataB;
int m = 0;
for (; m < 3; m++) {
int n = 0;
for (; n < 3; n++)
printf("%i,", *p + ((m * 3) + n));
printf(";");
}
return 0;
}
#包括
int main(){
int dataA[3][3]={{1,2,3},{4,5,6},{7,8,9};
int i=0;
对于(;i<3;i++){
int j=0;
对于(;j<3;j++)
printf(“%i”,dataA[i][j]);
printf(“;”);
}
认沽权(“”);
int-dataB[3][3]={{1,2,3},{4,5,6},{7,8,9};
int*p=(int*)数据;
int m=0;
对于(;m<3;m++){
int n=0;
对于(;n<3;n++)
printf(“%i,”,*p+((m*3)+n));
printf(“;”);
}
返回0;
}
如果我以这种方式声明(这种声明正确吗?),如何以这种方式打印出来
#include <stdio.h>
int main() {
puts("");
int *dataC[3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
/*
* How to print out the array in this situation?
*/
puts("");
int x[] = { 1, 2, 3 };
int y[] = { 4, 5, 6 };
int z[] = { 7, 8, 9 };
int *dataD[3] = { &x, &y, &z };
/*
* How to print out the array in this situation?
*/
return 0;
}
#包括
int main(){
认沽权(“”);
int*dataC[3]={{1,2,3},{4,5,6},{7,8,9};
/*
*在这种情况下如何打印阵列?
*/
认沽权(“”);
int x[]={1,2,3};
int y[]={4,5,6};
int z[]={7,8,9};
int*dataD[3]={&x,&y,&z};
/*
*在这种情况下如何打印阵列?
*/
返回0;
}
dataC
不能以这种方式初始化。当您使用int[]
初始化时,dataC
的元素类型为int*
正如@WhozCraig所评论的,如果您:
int *dataC[3] = {(int []){1, 2, 3}, (int []){4, 5, 6}, (int []){7, 8, 9}};
int *dataD[3] = { x, y, z };
您可以使用与dataA
相同的方法输出数组
dataD
也不能以这种方式初始化。dataD
的元素类型为int*
x
、y
和z
可以转换为类型int*
,但是您使用的&
运算符不正确-&x
这里的类型是int**
,而不是int*
如果您执行了以下操作,则为有效的初始化:
int *dataC[3] = {(int []){1, 2, 3}, (int []){4, 5, 6}, (int []){7, 8, 9}};
int *dataD[3] = { x, y, z };
如果是这种情况,您可以使用与
dataA
相同的方法简单地输出这个数组。是否有类似cast的方法可以使int*dataC[3]={{1,2,3},{4,5,6},{7,8,9};有效?@leewillam复合文字:int*dataC[3]={(int[]){1,2,3},(int[]){4,5,6},(int[]){7,8,9}代码>@WhozCraig这正是我想知道的,谢谢。