gpt4 book ai didi

c++ - 输出打印地址而不是 3D 数组指针中的值

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

我正在尝试声明一个 3D 数组并使用指针将值存储到 3D 数组中。但是我可以使用 scanf 获取输入,但输出总是打印地址而不是数组的值。下面是我的代码。我在这里做错了什么?

#include <stdio.h>

void main()
{
int b[3][3][3];
int l1,l2,l3;
int *pa2[3][3];

pa2[3][3]=b;

for(l1=0;l1<3;l1++)
{
for(l2=0;l2<3;l2++)
{
for(l3=0;l3<3;l3++)
{
scanf("%d",(((pa2+l1)+l2)+l3));
}
}
}

for(l1=0;l1<3;l1++)
{
for(l2=0;l2<3;l2++)
{
for(l3=0;l3<3;l3++)
{
printf("%d\n",*(((pa2+l1)+l2)+l3));
}
}
}
}

最佳答案

您在 scanf 行和 printf 行中使用指针 pa 访问数组都是错误的。

你有

scanf("%d",(((pa2+l1)+l2)+l3));

(((pa2+l1)+l2)+l3) 的计算结果是什么?

就是(pa2+l1+l2+l3)。我相信那不是你想做的。通过使用它,您的程序会受到未定义行为的影响。

您可以使用:

&(pa2[l1][l2][l3])

如果您坚持使用不太清晰的形式,则需要使用:

(*(*(pa2+l1) + l2) + l3)

对于printf语句,您可以使用:

printf("%d\n", pa2[l1][l2][l3]);

printf("%d\n", *(*(*(pa2+l1)+l2)+l3));

更新

pa2 的声明和设置它的行也是错误的。

代替

int *pa2[3][3];
pa2[3][3]=b;

你需要:

   int (*pa2)[3][3];    
pa2=b;

或一个衬垫:

   int (*pa2)[3][3] = b;

关于c++ - 输出打印地址而不是 3D 数组指针中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31882363/

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