gpt4 book ai didi

c - 声明指向 3 x 3 数组的指针并使用指针打印它

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

我如何声明一个指向 3×3 数组的指针并使用该指针打印它....编译器给出错误“[错误] 下标值既不是数组也不是指针也不是 vector ”

#include <stdio.h>
int main(void)
{
int A[3][3][3]={0};

int *ptr=A;
int i,j,k;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
printf("%d ",*ptr[i][j][k] );
}
puts("");
}
}
return 0;
}

最佳答案

您的代码的问题是您声明了一个指向int 的指针,并向它转换了一个数组。这是不正确的,因为指针具有一个隐式“维度”(因此允许单个解引用),而您的数组具有三个维度。

要解决此问题,请将 ptr 声明为指向 3×3 数组的指针:

int (*ptr)[3][3]=A;

在这种情况下,您需要在访问数组元素时移除取消引用运算符

printf("%d    ", ptr[i][j][k]);

demo 1.

或指向 3×3×3 数组的指针

int (*ptr)[3][3][3]=&A;

在这种情况下,您需要在对其应用索引之前取消对指针的引用:

printf("%d    ", (*ptr)[i][j][k]);

demo 2.

关于c - 声明指向 3 x 3 数组的指针并使用指针打印它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415151/

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