| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1310 人关注过本帖
标题:问个题目!?求教!
只看楼主 加入收藏
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
貌似老谭书上的,已经是老问题了。
“指针很强大,但千万不要试图去改变一个常量”

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-24 22:27
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
[bo]以下是引用 [un]lnhaing[/un] 在 2008-4-24 10:25 的发言:[/bo]
*str++ = *last_char;
 ...

不要试图修改常量字符串空间

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-04-24 22:32
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
[bo]以下是引用 [un]雨中飛燕[/un] 在 2008-4-24 10:45 的发言:[/bo]

你这是TC经典错误

http://blog.

它的错误还不在局部变量上,因为打印也是在局部变量生存期期间完成的。
主要错误是反转的时候,str指针应该是移动到字符串中间去了,然后还是用移动后的地址去打印。应该输出的是反转后的字符串的后半部分。

[[it] 本帖最后由 hoodlum1980 于 2008-4-25 09:51 编辑 [/it]]
2008-04-25 09:43
daocaorenhe
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-4-22
收藏
得分:0 
已经运行过
#include <stdio.h>
#include <string.h>

void reverse_string()
{
    char *str = "abcd";   
    char *last_char;
    for(last_char = str; *last_char != '\0'; last_char++);
  //  last_char--;
  /*  while(str < last_char)
    {
        char temp;
        temp = *str;
        *str++ = *last_char;//尝试改变字符串常量,致命错误
        *last_char-- = temp;
        
    }*/
    //作为局部变量“abcd”的反转输出,完全可以使用指针操作,
    //而不需要移动内存数据,这样会减慢程序执行速度
    do
    {
        last_char--;
        putchar(*last_char);
        
    }while(last_char != str);
}
int main()
{
    reverse_string();
    return 0;
}
2008-04-25 10:16
快速回复:问个题目!?求教!
数据加载中...
 
   



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

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