gpt4 book ai didi

c++ - 使用二维数组作为一维数组是否正确?可能导致未定义的行为等等?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:05 25 4
gpt4 key购买 nike

这段代码正确吗?出于某种原因是否已弃用二维数组作为一维数组?

char tab1[3][3];

for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
tab1[i][j] = (char)i;

printf("%c", ((char*)tab1)[3]); // == tab1[1][0]

最佳答案

Is using 2 dimensional array as 1 dimensional deprecated for some reason?

当您按照您的方式使用 tab1 时,它会衰减为 char (*)[3] 类型的指针(指向 3 个 chars).它不会衰减为 char*

如果不显式转换它,您不能将它用作 char*

Re: Is this code proper?

它的定义很好,因为对于代码中的 tab1&tab1&tab1[0]&tab1[0] [0] 指向内存中的相同位置,即使它们都是不同的类型。

关于c++ - 使用二维数组作为一维数组是否正确?可能导致未定义的行为等等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122708/

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