游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4523|回复: 9

关于"写strcpy函数原型"的一个疑问

[复制链接]

7

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2007-3-13 21:43:00 | 显示全部楼层 |阅读模式
代码如下:
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ )
NULL ;
return address ;
}

但我觉的"return address ;"这句并不妥,因为address是局部变量,为其分配的是栈内存,众所周知栈内存
在函数调用完后就会被释放,所以写成
strDest= address;
return  strDest;

要好点,不知道大家的看法是怎样的?

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-3-13 23:54:00 | 显示全部楼层

Re: 关于"写strcpy函数原型"的一个疑问

好像返回的时候用值传递的吧
我不大确定,我觉得原来那样没什么问题

8

主题

46

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2007-3-14 00:16:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

因为返回的指针是指向字符串常量区的。。所以return strDest 和return add 一个意思

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-3-14 11:10:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

1. Each of these functions of string returns the destination string (strDestination). No return value is reserved to indicate an error.
2. 因为char *address = strDest;所以return address ;等同于return strDest;
3. 指针是间接的变量,它保存的是一个地址,所以返回的值拷贝中的最主要的目标地址并没有改变
4. 返回dest最主要的原因是,函数返回值设计成这样是为了能写成strcat(strcpy(...))这样子

7

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
 楼主| 发表于 2007-3-14 12:59:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

谢谢马肝和楼上的几位,呵呵,是没问题,因为指针指向的内存域还归strDest使用.

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-3-14 16:16:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

。。。。很明显混淆了值和引用,呵呵。

7

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
 楼主| 发表于 2007-3-14 18:00:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

楼上的和引用无关吧,引用只是一个别名,这个是指针哈

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-3-15 10:36:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

指针是广义的引用

7

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
 楼主| 发表于 2007-3-15 11:26:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

楼上的说法很新颖,可惜我没找到这一说法的相关资料,呵呵
说下我的看法:
我认为指针最多算的上间接引用,而且还很不彻底.指针保存的是变量的地址,但它和变量之间是无法通信的,如果变量的生存期结束,指针是无法知道的,如果还对这一地址操作的话就会出错.但引用和变量却是同生共死,直接通信.

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-3-15 11:41:00 | 显示全部楼层

Re:关于"写strcpy函数原型"的一个疑问

呵呵,这里的“引用”不限于C++的引用。而是指词义上的“引用”。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 17:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表