C语言字符串题:库函数strcpy用于复制字符串,若有以下定义语句:

charstr1[]="china",str2[19],*str3,*str4="china";则对库函数strcpy的正确的调用是A.strcpy(str1,"poep... char str1[]="china",str2[19],*str3,*str4="china";

则对库函数strcpy的正确的调用是
A. strcpy(str1,"poeple")
B. strcpy(str2,"poeple")
C. strcpy(str3,"poeple")
D. strcpy(str4,"poeple")
求详细解析
展开
 我来答
SinFaint
2015-06-25 · TA获得超过238个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:88.1万
展开全部
B

解析:strcpy函数原型是char *strcpy(char* dest, const char *src);功能是 把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。要注意,src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。(具体可以看你的C语言课本)
由定义语句,str1是一个6字节(china5个字母还有一个结束符/NULL)字符型数组,str1表示的是该6字节内存地址的首位;同理,str2表示的是一段19个字节内存地址首位,并且该内存已经划分出来,虽然不知道内容是什么,但是已经在内存中占有位置;而str3是一个字符型指针,但是没有初始化,也就意味着现在,str3并不在内存中占有任何物理空间;str4也是字符型指针,经过初始化,str4指向字符串china的首地址。常量,不能通过strpy函数而只能用赋值语句赋值。
再看选项,people是6个字符,加上结束符,要复制这段字符就需要7字节内存,str1只有6字节,长度不够,复制会造成溢出;str3还没有在内存中分配位置,str4不能用这种方法赋值。因此只有str2符合要求。
wchyumo2011
2015-06-25 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2756万
展开全部
正确答案选择B
由于存储poeple需要7个单位的存储空间,最后一个是'\0'
所以str1空间不足,A错误
str3是一个指针,没有开辟空间C错误
str4也是一个指针,指向一个常量,D错误
更多追问追答
追问
字符指针str4在被赋值为字符串"china"之后,就不能被赋值为其他字符串了吗?
追答
str4是一个指针,是可以重新指向其他位置的,比如str4=str2这样的式子是合法的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式