如何以指针作为参数调用函数

问题描述 投票:0回答:1

什么问题?我想发送一个指向函数的多维指针作为其参数。但是我得到了这个错误

[在check nevis.exe中在0x00007FF770A92231处引发的异常:0xC0000005:访问冲突读取位置0x0000000400000007。

我做错了什么?这个错误是什么意思?

#include <stdio.h>
test(int *ptr)
{
    printf("%d", *(*(ptr+1)+1));
}
int main()
{
    int a[2][3] = { { 1,2,3 }, { 4,5,6 } };
    int(*ptr)[2][3]=&a;
    test(ptr);
    return 0;
}
c pointers exception multidimensional-array function-pointers
1个回答
0
投票

您需要具有指向int的指针:

void test(int **ptr)
{
    printf("%d", ptr[1][1]);
}

int main()
{
    int a[2][3] = { { 1,2,3 }, { 4,5,6 } };
    int **ptr = a;
    test(ptr);
    return 0;
}

注意:在函数中不加任何前缀的函数应加上'void'作为前缀,这是一种很好的习惯,这是一种很好的做法。可能您对此有警告-永远不要忽略警告!

© www.soinside.com 2019 - 2024. All rights reserved.