Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 有多少种方法可以打印整数数组的数组?_C_Arrays - Fatal编程技术网

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这正是我想知道的,谢谢。