| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 637 人关注过本帖
标题:希望高人指点,迷糊中
只看楼主 加入收藏
战斗!立
Rank: 2
等 级:论坛游民
帖 子:29
专家分:43
注 册:2011-11-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
希望高人指点,迷糊中
#include<stdio.h>

void main()
{
    char *pmessage = "hello word!\n";
    char amessage[] = "hello word!\n";
    printf(pmessage);
    printf(amessage);
    //pmessage[5]='A';
    amessage[5]='B';
    //printf(pmessage);
    printf(amessage);
}
这边双斜杠的为什么必行,请高人指点。为什么指针类的不行;说的集体点哦。
搜索更多相关主题的帖子: hello 
2011-11-29 18:23
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
回复 楼主 战斗!立
"hello word!\n"是字符串常量,存在常量区,
char *pmessage = "hello word!\n";定义了一个指针变量指向常量区的字符串常量,
char amessage[] = "hello word!\n";定义了一个字符数组,局部变量,在栈上,并拷贝了一份放在数组里,所以用指针是改变常量区,是错误的,用数组改变的是栈上的,可以

总有那身价贱的人给作业贴回复完整的代码
2011-11-29 19:28
hk327143206
Rank: 2
等 级:论坛游民
帖 子:35
专家分:31
注 册:2011-6-25
收藏
得分:1 
求教了!

[ 本帖最后由 hk327143206 于 2011-11-29 20:04 编辑 ]
2011-11-29 19:44
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:9 
"hello word!\n"字符串字面量(string literal)——C语言源程序中用双引号包含的字符串的正式名称——有两种稍有区别的用法:
(1)用作数组初始值(如同char amessage[] = "hello word!\n";的声明),它指明数组中字符的初始值。
(2)其他情况下,它会转化为一个无名的静态字符数组,可能会存储在只读内存中,这久导致它不能被修改。在表达式环境中,数组通常被立刻转换为一个指针。因此char *pmessage = "hello word!\n";声明把pmessage 初始化成指向无名数组的第一个元素。
2011-11-29 20:47
快速回复:希望高人指点,迷糊中
数据加载中...
 
   



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

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