| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8581 人关注过本帖
标题:[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
只看楼主 加入收藏
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:49 
[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别
如题:
我是这样理解的,大家看对不对
1、char* a = "abc"; 声明了一个字符类型的指针a,并为它赋值初始值为"zhf"其中字符串"zhf"应属于全局静态存储区,这里对a[1] = 'k',在编程中会出错,高手解释一下为什么?这里 a = null,可以,容易理解,因为a是指针类型。
2、char a[] = "abc"; 声明了一个字符型数组,并赋初值。这里的字符串"zhf"应该是属于堆存储区,是在局部开辟的空间。所以,这里对a[1] = 'k';是正确的。由于数组类型a相当于一个const型的指针,所以a = null;会出错。
欢迎高手纠正、补充。
搜索更多相关主题的帖子: abc char 
2007-09-19 20:47
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
糟糕```我对储存和```堆饯一点不知道啊```但是我能说的就是 :

char *a = "abc" ; 后 a的值是"abc"这个字符串的首地址``

char a[] = "abc"; 后 a[]={'a','b','c','\0'}



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-19 20:55
HK狼
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2007-9-9
收藏
得分:0 

char *a="abc" --》a中存放的是"abc"这个字符串的首地址( 第一个字符的地址 )

也可以这样表示
char *a;
char b[]="abc";
a=&b[0];
是一样


2007-09-19 20:56
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 
如果字符串是这样声明的:char *a="abc",然后a[1]='k'会有发生运行错误,而如果字符串这样声明:char a[]="abc",a[1]='k'却无错误?

[此贴子已经被作者于2007-9-19 21:10:09编辑过]


英者自知,雄者自胜
2007-09-19 21:08
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 

好问题 等待高手

2007-09-19 21:20
HK狼
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2007-9-9
收藏
得分:0 
char *a="abc",然后a[1]='k'会有发生运行错误,
这里a是指针变量 a[1] 是什么 当然错了

而如果字符串这样声明:char a[]="abc",a[1]='k'却无错误?
这里a是数组 a[1]='k' 没问题

2007-09-19 21:37
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

我觉得这样声明没问题: char *a="abc",a代表一个字符串"abc"的的首地址,a[1]代表该字符串的第2个字符也就是字符'b',a[1]相当于*(a+1)

[此贴子已经被作者于2007-9-19 21:45:29编辑过]


英者自知,雄者自胜
2007-09-19 21:44
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
char *a="abc"没有为字符串分配内存。。。

偶学编程,也许本身就是一个错。。。
2007-09-19 21:45
白年不亮
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-9-17
收藏
得分:0 
8楼的是谁?
是本人我就详细分析这个问题。

[glow=255,red,2] 天凉了,穿上马甲暖和多了。[/glow]
2007-09-19 21:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

*(a+1)='k';


倚天照海花无数,流水高山心自知。
2007-09-19 21:48
快速回复:[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
数据加载中...
 
   



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

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