我真的对这个程序不知所措。我想让它返回一个由5个元素组成的整数数组的地址。但是它不起作用。如何使C函数返回数组的地址而不是第一个元素的地址(基址)?我知道两者在数字上是相同的,但它们的类型不同,这就是我问的原因。
也就是说,如何声明这些函数的原型?我知道如何声明原型的参数部分(使用抽象声明符),但如果要返回数组或函数的地址,就不知道如何声明返回类型。我只知道,如果在声明中的函数名之前加上“*”表示函数返回指向各自主数据类型的指针比如int,char或者float。

    #include<stdio.h>

    int (*)[5]fun(int (*)[5]);

    int main(void)
    {

    int arr[5];

    printf("%u",fun(&arr));

    }

    int (*)[5]fun(int (*arr_add)[5])
    {
    return arr_add;
    }

你好!!丹尼尔·费舍尔谢谢你的回答。你的回答准确而简洁。但我选择H2CO3的答案是因为那个聪明的匈牙利孩子费劲地通过聊天向我详细解释了它。当这么多聪明人回答时,很难找到最好的答案。谢谢大家!!

最佳答案

给你:

int (*fun(int (*arr)[5]))[5]
{
    return arr;
}

如果要返回第一个元素的地址(与数组本身的地址相反),则这是另一种类型:
int *fun(int (*arr)[5])
{
    return &(*arr)[0];
}

关于c - 在C中,如何使该程序返回数组的地址而不是第一个元素的地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15985761/

10-12 14:52