e****9 发帖数: 316 | 1 代码:
499 /*-------- GetSomeIDs-----*/
500 int * GetSomeIDs()
501 {
502 int ids[8];
503-550 /* The ids are defined here */
551 return ids;
552 }
题目是:
Is there a different way to write line 500 which preserves the same
effective prototype? If so, what is it?
实在想不出有什么别的方式来定义函数,不知道大家有什么建议没有? |
r**u 发帖数: 1567 | 2 这个code本身有问题啊,ids是个local的array,function return以后就变invalid,
怎么能return ids呢
【在 e****9 的大作中提到】 : 代码: : 499 /*-------- GetSomeIDs-----*/ : 500 int * GetSomeIDs() : 501 { : 502 int ids[8]; : 503-550 /* The ids are defined here */ : 551 return ids; : 552 } : 题目是: : Is there a different way to write line 500 which preserves the same
|
t*q 发帖数: 104 | 3 const int * GetSomeIDs() ?
【在 e****9 的大作中提到】 : 代码: : 499 /*-------- GetSomeIDs-----*/ : 500 int * GetSomeIDs() : 501 { : 502 int ids[8]; : 503-550 /* The ids are defined here */ : 551 return ids; : 552 } : 题目是: : Is there a different way to write line 500 which preserves the same
|
e****9 发帖数: 316 | 4 整个这个一道改错题.返回局部变量是其中的一个,这个好解决.
现在解决不了的就是前面提到的
Is there a different way to write line 500 which preserves the same
effective prototype? If so, what is it?
想了想,好像没有什么其他得方法来定义这个函数,唯一能想到的就是前面加个inline
【在 r**u 的大作中提到】 : 这个code本身有问题啊,ids是个local的array,function return以后就变invalid, : 怎么能return ids呢
|
r********t 发帖数: 395 | 5 可能是改错 题。也可能让你把输出的变量通过引用作为参数输出。不知道它是不是单
纯地C,如果是C++就可以call by reference了。。。 |
e****9 发帖数: 316 | 6 我觉得加上const改变了函数的意思,原本就是要返回int *.
【在 t*q 的大作中提到】 : const int * GetSomeIDs() ?
|
e****9 发帖数: 316 | 7 从题目上看应该是纯C的,所以reference也不行
【在 r********t 的大作中提到】 : 可能是改错 题。也可能让你把输出的变量通过引用作为参数输出。不知道它是不是单 : 纯地C,如果是C++就可以call by reference了。。。
|
a****n 发帖数: 1887 | 8 499 /*-------- GetSomeIDs-----*/
500 int * GetSomeIDs()
501 {
502 int ids[8];
503-550 /* The ids are defined here */
551 return ids;
552 }
或者用static, 或者放到heap 里
502 static int ids[8]; |
e********e 发帖数: 12 | 9 500 GetSomeIDs(int **ppids)
【在 a****n 的大作中提到】 : 499 /*-------- GetSomeIDs-----*/ : 500 int * GetSomeIDs() : 501 { : 502 int ids[8]; : 503-550 /* The ids are defined here */ : 551 return ids; : 552 } : 或者用static, 或者放到heap 里 : 502 static int ids[8];
|
c****p 发帖数: 32 | 10 why? it doesn't work either.
it's more reasonalbe to change line 502 to use static.
【在 e********e 的大作中提到】 : 500 GetSomeIDs(int **ppids)
|
e********e 发帖数: 12 | 11 我的意思是除了可以使用函数返回变量值,还可以通过改变参数的方式来获取这个值,
这个可以
通过提供指针参数的方式,因为你要返回一个指针,所以使用指针的指针作为参数 (
int **ppids)
当然这种方法,需要动态分配内存。
不是说改变 500 行么,所以这里提供一种思路.....
【在 c****p 的大作中提到】 : why? it doesn't work either. : it's more reasonalbe to change line 502 to use static.
|