gpt4 book ai didi

c - 将值分配给动态分配的二维指针数组时出现语法错误

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

我想直接给动态分配内存的二维指针数组赋值。但是编译器显示 2 个警告和 1 个错误。

2 Warnings on line 11 and 12: int differs in level of indirection from int*.

error on line 13: Syntax error : '{'

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int r , c, rc;
int* pmat1[3][3], pmat2[3][3], pmat3[3][3];

*pmat1[3] = (int*)calloc(3,sizeof(int));
*pmat2[3] = (int*)calloc(3,sizeof(int));
*pmat3[3] = (int*)calloc(3,sizeof(int));

*pmat1[3][3] = { {1,1,1}, {0,0,0}, {2,2,2} };
return 0;
}

我在这里犯了什么错误?

最佳答案

你的代码有很多问题。第一个是只有 pmat1 是指向 int 的指针数组,其他的(pmat2pmat3 ) 只是 int 数组的数组(即不是指针)。

第二个问题是初始化,你不能那样赋值,你必须分别初始化每个字段。

第三,*pmat1[3] 没有做您可能期望它做的事情,此外它越界,因为数组索引从零开始。


如果我们要深入到更基本的层面,如果你想要的是一个由三个整数组成的三个数组的数组,那么你做的就完全错了,那么它就足够了

int pmat1[3][3];

以上将导致编译器分配总共九 (3 * 3) 个 int 的空间。无需任何动态分配。

然后你可以像这样初始化它

pmat1[0][0] = pmat1[0][1] = pmat1[0][2] = 1;
pmat1[1][0] = pmat1[1][1] = pmat1[1][2] = 0;
pmat1[2][0] = pmat1[2][1] = pmat1[2][2] = 2;

关于c - 将值分配给动态分配的二维指针数组时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735689/

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