| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1104 人关注过本帖
标题:像初学者介绍一个容易犯错的问题
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
总算弄个七七八八了

#include<stdio.h>
int main()
{
     char p[] = "Hello word.";
     p[1]='L';
     printf( "%s\n", p);

     return 0;
}
只有这样才可以修改字符串
而由char *p = "Hello word.";定义的字符串是不可修改的

DO IT YOURSELF !
2012-11-06 09:10
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
简单搜索了一下C99标准 有提到这个问题的地方

图片附件: 游客没有浏览图片的权限,请 登录注册



2012-11-06 09:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2012-11-6 09:22:16的发言:

简单搜索了一下C99标准 有提到这个问题的地方

再多说一句 就像上面大牛说的那样 代码最终是由编译器实现的 所以一切以编译器为准 神马教科书啊 标准啊 甚至是编译器的手册 都不准 以编译器和编译器生成的汇编或者说机器码为准

所以对于这个问题 如果在VC里能行 那至少可以说 对于VC是对的

不过呢 实际编程最好少用这种依赖编译器实现的东西 尽量写通用的 可移植性好的代码
2012-11-06 09:25
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 8楼 StarFall
我郁闷  怎么可能  我在VC6.0上报错了  必须得把char *p  改成char p[]
2012-11-06 12:41
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 13楼 zklhp
你确认在VC上可以运行?   我的就不可以啊   我也是VC  其实我想说的不是关于编译器  而是有关栈      静态存储区的 一些概念。。。
2012-11-06 12:43
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 4楼 yijingtao
我写的是p指针  存储的是字符串的首地址。。。   而“hello word” 是字符串常量  不可以做修改。   但是如果是下面的情况 char p[] ="hello word"  则是将字符串存储在数组里   而数组是可以修改的   因为它不是常量。。。  虽然书上经常说字符串是以数组的形式存储的  但是不能完全混为一谈   这涉及到静态存储区  栈 堆的知识点    我没考虑过编译器的问题。
2012-11-06 12:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用小旭哥在2012-11-6 12:43:12的发言:

你确认在VC上可以运行?   我的就不可以啊   我也是VC  其实我想说的不是关于编译器  而是有关栈      静态存储区的 一些概念。。。
程序代码:
// 111.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main(int argc, char* argv[])
{
    char *p = "Hello word.";
    p[1] = 'L';
    printf( "%s\n", p );
    return 0;
}



VC6 release版编译 exe文件是这个

111.zip (14.23 KB)


图片附件: 游客没有浏览图片的权限,请 登录注册


不敢打开没关系 我运行一下给你看看

2012-11-06 12:54
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 10楼 zklhp
朋友  你确认VC可以运行   我是在自己电脑上的VC上实验过后在敢放上去的。。。  我被VC弄糊涂了  呵呵
2012-11-06 13:02
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 17楼 zklhp
学习了,,,
2012-11-06 13:04
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用小旭哥在2012-11-6 13:02:44的发言:

朋友  你确认VC可以运行   我是在自己电脑上的VC上实验过后在敢放上去的。。。  我被VC弄糊涂了  呵呵

图片附件: 游客没有浏览图片的权限,请 登录注册


再来一张图 你不信我就没办法了
2012-11-06 13:12
快速回复:像初学者介绍一个容易犯错的问题
数据加载中...
 
   



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

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