可能重複:
How to find the sizeof(a pointer pointing to an array)傳陣列不指向函數用C
欲數組傳遞給函數,使得如果我使用sizeof
操作者上陣列內部函數體,我應該得到數組的實際大小,而不是指針的大小。對於e.g -
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,0};
printf("Array size = %d\n", sizeof(arr)/sizeof(int)); ---> O/P = 40/4 = 10
func(arr);
}
void func(int arr[])
{
printf("Array size = %d\n", sizeof(arr)/sizeof(int)); --->O/P = 4/4 = 1
}
的printf
聲明在主函數打印10
出,而func
打印1
。 C language
可以這麼做嗎?
編輯:我知道像wrapping the array into a struct
等其他替代品其實,我試圖來解決TopCoders網站和一個問題,要求給出一個問題是,我必須寫一個函數(下面給出的要求)。現在我很困惑,我如何計算int maxDonations(int[] donations)
函數中int[] donations
數組的大小。
Definition
Class: BadNeighbors
Method: maxDonations
Parameters: int[]
Returns: int
Method signature: int maxDonations(int[] donations)
(be sure your method is public)
如果你願意,我可以發表整個問題。
Dupe,無疑很多次,不,這是不可能的,但只有一百萬種其他方式來實現你想要的。 – 2012-03-04 07:45:10
@ChrisLutz:我編輯了這個問題來包含我正在努力完成的任務。 – 2012-03-04 08:03:54
問題規範的語法清楚地表明他們不是在談論C – 2012-03-04 08:17:26