| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8587 人关注过本帖
标题:[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
只看楼主 加入收藏
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

在谭浩强的那本C程序设计第2版的236页上的那个程序也不能运行,估计就是这个原因,一运行就出现运用程序错误的提示,我贴上来,不妨大家也试试看能不能运行

#include<stdio.h>
void copy_string(char *from,char *to)
{
for(;*from != '\0';from++,to++)
*to=*from;
*to='\n';
}
int main(void)
{
char *a = "I am a teacher.";
char b[] = "you are a student";
printf("\nstring a=%s\nstring b=%s\n",a,b);
copy_string(b,a);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}


英者自知,雄者自胜
2007-09-19 22:28
lengyang12
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-18
收藏
得分:0 

我是这样理解的,既然有char* a = "abc",就说明a是一个指针变量,a是指向字符串"abc"的首地址。既然是一个指针,怎么会有a【1】出现呢,除非定义了一个指针数组,这样才会有a【0】,a【1】。。的出现。

2007-09-19 22:44
reedleaf
Rank: 2
等 级:新手上路
威 望:3
帖 子:62
专家分:0
注 册:2007-8-5
收藏
得分:0 
*to='\n'; //改为:*to='\0'


copy_string(b,a);//改为:copy_string(a,b); :)





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

按楼上改了下,程序运行正常。。。
感觉对c/c++内存分配机制有点迷糊


英者自知,雄者自胜
2007-09-19 22:58
luoshiqi
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-7-25
收藏
得分:0 
等待高手

2007-09-19 23:03
wzhgzj
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2007-9-6
收藏
得分:0 

10楼的!怎么看不懂你解释的呢?


命运在我手中
2007-09-19 23:03
chllin
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-9-14
收藏
得分:0 
char *a; 仅仅定义一个指向字符数据的指针变量,即仅仅分配4字节地址变量空间。而它存储的地址是未知的。
当执行 *(a+1)='k';语句是修改未知内存区域的操作。

2007-09-19 23:15
chllin
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-9-14
收藏
得分:0 

27楼(本人)说的不够严谨。

当执行 *(a+1)='k';语句时,是修改内存常量存储区域的操作。


2007-09-19 23:27
学c
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-17
收藏
得分:0 

抗议雨中飞燕!!说话吞吞吐吐!!不解释明白,装酷吗??????

2007-09-20 09:42
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 
2007-09-20 10:04
快速回复:[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
数据加载中...
 
   



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

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