c语言字符指针和字符串常量问题

字符串复制函数定义strcpy(char*dst,charconst*src);问题如下:chara[]=“originalmessage”;charb[50];strc... 字符串复制函数定义strcpy(char *dst,char const * src);
问题如下:
char a[]=“original message”;
char b[50];
strcpy(b,a);
那么a和b是两个数组的指针,其类型是char *;
但是strcpy(b,“different”);
也可以进行字符串复制,那说明“different”也是char *类型吗?这是为什么呢?
请各位高手帮忙解释一下
展开
 我来答
炎発の秋葉
2011-10-08
知道答主
回答量:3
采纳率:0%
帮助的人:3.2万
展开全部
"Different"是字符串(正式名称是ASCZ串,简称C串)
字符串在内存中表现为连续的字符
例如"Different"其实是'D' 'i' 'f' 'f' 'e' 'r' 'e' 'n' 't' '\0'连接在一起(每一个字母对应的ASCII码填写一个Byte,最后一字节由0填写,1Byte=sizeof(char)),在C中,这种ASCZ串会在内存中被分配地址(这一句很重要),数组的名字又可以当作第一个元素的指针
所以"Different"这个表达式应该和(&(("Different")[0]))一样(不信你自己编译下)
这样也能解释为什么字符串是字符数组,是字符指针了
PS:所有的数组都是其首元素指针,这个指针的特性是指针变量地址的值和指针的值相等,这个你可以用printf("%d"输出试试
CQ空谷幽兰
2011-10-08 · TA获得超过225个赞
知道小有建树答主
回答量:499
采纳率:0%
帮助的人:183万
展开全部
不是的,它任然是一个字符串,看看下面几个程序以及结果吧
#include <stdio.h>
main()
{

char a[]="original message";
char b[50];
strcpy(b,a);
printf("%s",b);
}
结果是original message

#include <stdio.h>
main()
{
char *b[50];
strcpy(b,"different");
printf("%s",b);
}
程序结果是different
可见different不是char *类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liyaomail
2011-10-08
知道答主
回答量:16
采纳率:0%
帮助的人:12.9万
展开全部
不是。这个只是把"different"这个字符串中的字符一次赋给b[]这个数组。
虽然strcpy是那么定义的,但不一定非要给他的参数是指针型的,在调用时只要给它的实参是字符型的常量就行,也就是给字符串就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Balley2
2011-10-09
知道答主
回答量:34
采纳率:0%
帮助的人:11.1万
展开全部
“different”表示的是一个地址,代表字符串的首地址,类似与指针,和数组名是一个概念。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1184810369
2011-10-08 · 超过23用户采纳过TA的回答
知道答主
回答量:65
采纳率:100%
帮助的人:54.9万
展开全部
“different”看起来是字符串,其实质就是一组地址的首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式