gpt4 book ai didi

创建有问题的二维数组 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:34 24 4
gpt4 key购买 nike

下面的代码是我尝试实例化一个二维数组,但实例化不正确:代码:

    FILE* kernalFile = fopen(argv[1], "r");
int rKernalSize;
fscanf(kernalFile, "%d", &rKernalSize);
unsigned int rKernal[rKernalSize][rKernalSize];

代码运行后断点的数据:rKernalSize 值:

Name : rKernalSize
Details:3
Default:3
Decimal:3
Hex:0x3
Binary:11
Octal:03

r核心值(value)观:

Name : rKernal
Details:0x7ffffffe0cd0
Default:[0]
Decimal:[0]
Hex:[0]
Binary:[0]
Octal:[0]

rKernal[][0]

它应该是 rKernal[3][3],这是文件,您可以查看它。如果需要:

3 -1 1 0 1 0 -1 0 -1 1 3 -1 1 0 1 0 -1 0 -1 1 3 -1 1 0 1 0 -1 0 -1 1

TLDR:rKernalSize 是正确的 (3) 但是当我使用 rKernal[rKernalSize][rKernalSize] 创建二维数组时,它没有正确实例化!它实例化为 rKernal[][0] 也许这是默认的但应该是 rKernal[3][3]

最佳答案

忘记调试器告诉您的内容。在您的代码中,紧接着:

unsigned int rKernal[rKernalSize][rKernalSize];

声明:

printf ("%d\n", sizeof(rKernal) / sizeof(unsigned int));

并查看它打印出的内容(希望是 9)。

编译时创建的调试信息可能不足以正确确定可变长度数组的大小。


例如,尽管 gcc 支持可变长度数组,但 gdb 本身直到 2009 年底仍无法正确处理它们,而且仍然没有提及它们在 2010 年 10 月的文档中。

所以我怀疑的问题,特别是因为我在上面提供的测试代码按预期输出9

关于创建有问题的二维数组 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029616/

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