Redian新闻
>
听说Life Pi里面还有一个中国厨师是不是也被吃了?
avatar
听说Life Pi里面还有一个中国厨师是不是也被吃了?# Movie - 无限影话
e*9
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?
实在想不出有什么别的方式来定义函数,不知道大家有什么建议没有?
avatar
j*n
2
是这样的吗?
avatar
r*u
3
这个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

avatar
t*q
4
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

avatar
e*9
5
整个这个一道改错题.返回局部变量是其中的一个,这个好解决.
现在解决不了的就是前面提到的
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呢

avatar
r*t
6
可能是改错 题。也可能让你把输出的变量通过引用作为参数输出。不知道它是不是单
纯地C,如果是C++就可以call by reference了。。。
avatar
e*9
7
我觉得加上const改变了函数的意思,原本就是要返回int *.

【在 t*q 的大作中提到】
: const int * GetSomeIDs() ?
avatar
e*9
8
从题目上看应该是纯C的,所以reference也不行

【在 r********t 的大作中提到】
: 可能是改错 题。也可能让你把输出的变量通过引用作为参数输出。不知道它是不是单
: 纯地C,如果是C++就可以call by reference了。。。

avatar
a*n
9
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];
avatar
e*e
10
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];

avatar
c*p
11
why? it doesn't work either.
it's more reasonalbe to change line 502 to use static.

【在 e********e 的大作中提到】
: 500 GetSomeIDs(int **ppids)
avatar
e*e
12
我的意思是除了可以使用函数返回变量值,还可以通过改变参数的方式来获取这个值,
这个可以
通过提供指针参数的方式,因为你要返回一个指针,所以使用指针的指针作为参数 (
int **ppids)
当然这种方法,需要动态分配内存。
不是说改变 500 行么,所以这里提供一种思路.....

【在 c****p 的大作中提到】
: why? it doesn't work either.
: it's more reasonalbe to change line 502 to use static.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。