我真的對這個程序感到茫然。我希望它返回一個5個元素的整數數組的地址。但它只是不會'工作。如何使一個C函數返回一個數組的地址而不是地址它的第一個元素(基地址)?我知道兩者在數字上是相同的,但它們的類型不同,這就是爲什麼我問。在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;
}
HELLO !!DANIEL FISCHER謝謝你的回答。你的回答確切而且簡潔。但我選擇了H2CO3的答案,因爲那個輝煌的匈牙利孩子不厭其煩地通過聊天向我解釋這個問題。很多聰明人在回答時很難挑出最好的答案。謝謝大家!
我相信,(*)[5]之前在聲明函數名稱是完全荒謬的。我可以聞到它。但是如果我們想要提到該函數將返回除int,char或float之外的簡單指針以外的其他東西,我們究竟該怎麼做?我們如何表示它要返回一個數組的地址或函數的地址? –
不是「&array_name」和「array_name」在類型上有所不同嗎?因爲「&array_name + 1」和「array_name + 1」肯定不同於以前按數組大小遞增的數據,而後者按一個元素的大小遞增。 –
是的,它們是不同的。一個是'int [5]',它可以衰減到'int *',另一個是'int(*)[5]'。 – 2013-04-13 08:27:40