gpt4 book ai didi

c++ - 将 3D 指针数组传递给函数

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

所以我在使这个测试程序工作时遇到了问题。所以我的目标是在我的主函数中创建并初始化一个 3D 数组,然后创建一个指向该数组的指针。之后我试图将指针传递给一个函数,然后打印出数组中的元素,以便我可以看到它的工作原理。我的问题出现在尝试传递指针数组时。你们有谁能看出我哪里出错了吗?

#include <stdio.h>

//declare test function
void test (int*);

int main(){

//declare array and pointer
int array[2][3][2];
int (*p)[2][3][2] = &array;

int i,j,k;

//initialize array
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
for(k = 0; k < 2; k++){
array[i][j][k] = 0;
}
}
}

//print array
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
for(k = 0; k < 2; k++){
printf("%d\n", array[i][j][k]);
}
}
}
printf("----------------------------\n\n");
//pass pointer array into test function
test(p);
}


void test(int (*array2)[2][3][2]){
int i, j, k;
//run thru each element in the pointer array and print
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
for(k = 0; k < 2; k++){
printf("%d\n", array2[i][j][k]);
}
}
}
}

最佳答案

如果您选择使用:

int array[2][3][2];
int (*p)[2][3][2] = &array;

然后,行

            printf("%d\n", array2[i][j][k]);

test 中需要:

            printf("%d\n", (*array2)[i][j][k]);

您还可以使用:

int array[2][3][2];
int (*p)[3][2] = array;

然后,您需要将函数更改为

void test(int (*array2)[3][2]){

void test(int array2[][3][2]){

这将允许您使用:

            printf("%d\n", array2[i][j][k]);

关于c++ - 将 3D 指针数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42169928/

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