-3
#include<stdio.h>
void func(int x[]);
main()
{
int a[]={1,2,3,4};
printf("size of %d \n",sizeof(a)); // Some value I'm getting
func(a);
}
void func(int a[])
{
printf("size of %d",sizeof(a)); // Value is changing
}
這兩次,'a'的值都不一樣。爲了通過維護這些代碼來獲得相同的價值,還需要添加哪些代碼或需要進行哪些更改?爲什麼我會得到不同的「a」值。要獲得相同的價值,需要做些什麼?
我不想更改任何函數的簽名。在不更改簽名的情況下,需要在func(int a[])
內添加哪些額外的代碼?
嗨,我不想改變任何功能的簽名。請在不改變簽名的情況下說我需要在func()中添加額外的代碼。 – 2013-04-20 13:43:09
最常用的方法是更改函數簽名。如果你真的無法做到這一點(比如說,因爲它對家庭作業的限制),你必須嘗試我的答案的第二部分提到的哨兵值方法。選擇一個永遠不會出現在數組中的值,並將最後一個值設置爲這個值。然後'func'可以迭代數組元素,直到找到一個帶有這個標記值的值。請注意,在調用'func'之前,所有數組元素都必須初始化,以便可靠地工作。 – simonc 2013-04-20 19:01:15