-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