首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数组,指针出现错误[警告]大括号包围标量初始值设定项

数组,指针出现错误[警告]大括号包围标量初始值设定项
EN

Stack Overflow用户
提问于 2014-04-13 04:24:28
回答 1查看 3.4K关注 0票数 1

下面是我的代码:

代码语言:javascript
复制
int main(int argc, const char * argv[])
{

    int *A[3] = {{1,1,1,1},{1,1,1,1},{1,1,1,1}};
    int *B[4] = {{2,2,2},{2,22,2},{3,3,3},{3,3,3}};
    int *C[3];
    multiply(A, 1, 2, B, 3, 4, C);
    printf("A matrix:\n");
    printMatrix(A,3,4);
    printf("B matrix:\n");
    printMatrix(B,4,3);
    printf("C matrix:\n");
    printMatrix(C,3,3);
    printf("Hello, World!\n");
    return 0;
}

它只是一个内部主体部分!

我得到了一个错误

标量初始值设定项周围的

warningBraces

在队列中:

代码语言:javascript
复制
int *A[3] = {{1,1,1,1},{1,1,1,1},{1,1,1,1}};

为什么?是因为我的错误还是编译器版本不同?

EN

回答 1

Stack Overflow用户

发布于 2014-04-13 04:41:16

Aint *数组,而不是2D数组。因此,初始化器应该是标量值,也就是int *

如果你有C99或C11,你可以像这样解救代码:

代码语言:javascript
复制
#include <stdio.h>

extern void printMatrix(int *x[], int y, int z);
extern void multiply(int *A[], int n1, int n2, int *B[], int n3, int n4, int *C[3]);

int main(void)
{
    int *A[3] = {(int []){1,1,1,1}, (int []){1,1,1,1}, (int []){1,1,1,1}};
    int *B[4] = {(int []){2,2,2}, (int []){2,22,2}, (int []){3,3,3}, (int []){3,3,3}};
    int *C[3];
    multiply(A, 1, 2, B, 3, 4, C);
    printf("A matrix:\n");
    printMatrix(A, 3, 4);
    printf("B matrix:\n");
    printMatrix(B, 4, 3);
    printf("C matrix:\n");
    printMatrix(C, 3, 3);
    printf("Hello, World!\n");
    return 0;
}

这在初始值设定项中使用C99复合文字。

但是,在为C中的每一行存储数据时,需要注意在multiply()中分配适当数量的空间。您还必须知道如何释放已分配的空间。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23035714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档