| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 813 人关注过本帖
标题:考考大家^_^
只看楼主 加入收藏
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
结帖率:94.44%
收藏
已结贴  问题点数:100 回复次数:15 
考考大家^_^
#include<iostream>
#include<cstdio>
using namespace std;


int main()
{
    char *src = "hello";
    char *dest = &src[1];
    while( (*dest++ = *src++)!='\0');
    *dest++='\0';
    cout << dest << endl;
    return 0;
}
你觉得上面的代码对吗??
如果错了 有几处错误啊?? 原因是什么
搜索更多相关主题的帖子: include hello 
2011-07-06 18:48
西元前的D调
Rank: 2
等 级:论坛游民
帖 子:15
专家分:78
注 册:2011-6-20
收藏
得分:10 
沙发!
2011-07-06 19:17
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
int main()
{
    char *src = "hello";//hello字符串存放在只读数据区
    char *dest = &src[1];//dest指向了只读数据区
    while( (*dest++ = *src++)!='\0');//这句肯定是非法内存访问  因为要修改只读数据区的数据
    *dest++='\0';//同上
    cout << dest << endl;
    return 0;
}


[ 本帖最后由 laoyang103 于 2011-7-6 19:55 编辑 ]

                                         
===========深入<----------------->浅出============
2011-07-06 19:22
西元前的D调
Rank: 2
等 级:论坛游民
帖 子:15
专家分:78
注 册:2011-6-20
收藏
得分:0 
貌似3楼正解。我想起来了,书上有说过,字符串是只读的,字符数组才能写。这错误debug时直接报出了一行看不懂的鸟语。。。
2011-07-06 19:28
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:10 
不亲自运行,还真看不出是内存的错误
既然是字符串拷贝,忍不住想改一改
以实现功能上的需求
程序代码:
#include<iostream>
#include<cstdio>
using namespace std;


int main()
{
    char *src = "hello";
    char a[10]="";
    char *dest = a;
    char *temp = dest;
    while( (*dest++ = *src++)!='\0');
    *dest++='\0';
    cout << temp << endl;
    return 0;
}


[ 本帖最后由 Pirelo 于 2011-7-6 19:48 编辑 ]
2011-07-06 19:46
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 3楼 laoyang103
还有个错误没找到
2011-07-06 20:55
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 5楼 Pirelo
其实你的代码也没有实现他想要的功能
她想要实现的功能是要实现strcpy(dest,src);
dest指向src的第二个元素地址
2011-07-06 20:58
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:10 
程序代码:
#include<iostream>//这个程序让我感觉到了匪夷所思。
#include<cstdio>
using namespace std;


int main()
{
    char *src = "hello";//char型指针src指向"hello"文件
    char *dest = &src[1];//char型指针dest指向'e'的地址
    while( (*dest++ = *src++)!='\0');//非法的指针操作
    *dest++='\0';//虽说指针的操作是需要练习和尝试的。但是类似这种操作是没有必要用只针吧?解释同上。
    cout << dest << endl;
    return 0;
}


[ 本帖最后由 yangfanconan 于 2011-7-6 21:35 编辑 ]
2011-07-06 21:33
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
收藏
得分:10 
回复 6楼 草狼
while的控制语句?不懂你跳出循环的那句是咋回事,后面还直接写了分号。总之,问题很多,老杨说的很清楚了。不懂楼主贴出来要给大家啥启示。求解!
2011-07-06 23:40
hello_jwei
Rank: 2
等 级:论坛游民
帖 子:4
专家分:28
注 册:2011-6-14
收藏
得分:10 
出去只读存储的问题
while( (*dest++ = *src++)!='\0');
也会死循环,dest被赋值成前一个字符,永远不会是'\0'
2011-07-07 08:59
快速回复:考考大家^_^
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017831 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved