gpt4 book ai didi

c - 数组,指针获取错误[警告]围绕标量初始值设定项的大括号

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:39 25 4
gpt4 key购买 nike

这是我的代码:

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;
}

它只是主要部分!

我遇到了错误

[warning]Braces around scalar initializer

排队:

int *A[3] = {{1,1,1,1},{1,1,1,1},{1,1,1,1}};

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

最佳答案

Aint * 数组,不是二维数组。因此,初始值设定项应该是 int * 类型的标量值。

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

#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 复合文字。

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

关于c - 数组,指针获取错误[警告]围绕标量初始值设定项的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23035714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com