打印

请问:如下函数调用有问题否?

[复制链接]
1630|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oumi|  楼主 | 2008-10-21 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
oumi|  楼主 | 2008-10-21 16:06 | 只看该作者

主要就是func1中temp[100]的生存期的问题

使用特权

评论回复
板凳
dld2| | 2008-10-21 16:12 | 只看该作者

瞎搞

使用特权

评论回复
地板
oumi|  楼主 | 2008-10-21 16:18 | 只看该作者

请指教,谢谢

使用特权

评论回复
5
dld2| | 2008-10-21 16:23 | 只看该作者

re

主要是想干什么。
正常情况下这个程序没有意义。会得到什么结果和编译器有关。

使用特权

评论回复
6
oumi|  楼主 | 2008-10-21 16:55 | 只看该作者

hi

我知道可以写成地址做形参传递,但是突然想到了就问问,瞎搞是不错的,在keil中这种写法写成
void func1(INT8U *src,INT8U length)
{
    memset(src,0, length) ;
}
void func2(void)
{
    INT8U temp1[100] ;
    INT8U temp2 ;
    func1(temp1,sizeof(temp1)) ;
    temp2 = temp1[50] ;
}

那么在vc里的postmessage()呢?还有keil里到底有没有问题?

使用特权

评论回复
7
dld2| | 2008-10-21 17:07 | 只看该作者

re

顶楼的p = func1() ;
得到就是一个野指针。读读倒也罢了,如果要向里面写什么,后果自负。
就是这样。

使用特权

评论回复
8
gszou| | 2008-10-22 17:12 | 只看该作者

有点不明白。

1:    p = func1() ;
2:    temp = *(p+50) ;

在第1行时,func1()的地址值给了P;
在第2行时,func1的地址加50,那到了什么地方了?
取这样的值,C语言中好像没这方面的介绍吧。这样的话不就不同的编译器,不同的结果。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

71

帖子

0

粉丝