设有以下语句:char str1[]="string",str2[8],*str3,*str4="string";不能对库函数strcpy的正确调用的是()
A.strcpy(str1,"HELLO!");B.strcpy(str2,"HELL0!");C.strcpy(str3,"HELL0!");D.strcpy(str4...
A.strcpy(str1,"HELLO!"); B.strcpy(str2, "HELL0!");
C.strcpy(str3,"HELL0!"); D.strcpy(str4, "HELLO!");
为什么? 展开
C.strcpy(str3,"HELL0!"); D.strcpy(str4, "HELLO!");
为什么? 展开
2个回答
展开全部
(因为你问这个问题,所以肯定有些混乱,所以我们讨论问题的中心,其他东西不多说,免得更混乱,以前我学这个的时候也是这样)
C是错误的,strcpy(a,“HELLO!”);
这个函数是把HELLO!复制到A所知的存储空间。注意,是存储空间。
所以,C选项是错误的,为什么C是错误的呢?让你混乱的地方肯定是这里:
C选项语法上是没有错误的,但是逻辑上不对,你看题目,题目说的是正确调用,所以如果你纠结于语法问题肯定要被搞死的。
C选项str3是个指针变量,但是刚才特地说了“存储空间”,你能告诉我这个str3指针变量所指的存储空间是哪里吗?不能,因为定义中没有给他赋值。
A是正确的,是把HELLO!复制到str1所指向的地址,也就是str1[]数组中
B是正确的,是把HELLO!复制到str2[8]这个具有八个元素大小的数组中
D是正确的,str4所指向的存储空间是"string"所在的地方,所以A,B,D的str都指向了一个存储空间,唯独C没有指向,所以C是不能用的。
绝对让你满意~
===========
补充:楼上说str4指向了一个字面字符串,是不能更改的。这个在这道题目中是不需要考虑的,为什么他说不能更改?因为str4更改后,string这个字符串所在的存储空间因为没有被其他变量所指向或被定义,所以string所在内存会被释放,也就是消失,这个在编程中会造成数据丢失,应该避免,但是在这个题目中,是无妨的。
C是错误的,strcpy(a,“HELLO!”);
这个函数是把HELLO!复制到A所知的存储空间。注意,是存储空间。
所以,C选项是错误的,为什么C是错误的呢?让你混乱的地方肯定是这里:
C选项语法上是没有错误的,但是逻辑上不对,你看题目,题目说的是正确调用,所以如果你纠结于语法问题肯定要被搞死的。
C选项str3是个指针变量,但是刚才特地说了“存储空间”,你能告诉我这个str3指针变量所指的存储空间是哪里吗?不能,因为定义中没有给他赋值。
A是正确的,是把HELLO!复制到str1所指向的地址,也就是str1[]数组中
B是正确的,是把HELLO!复制到str2[8]这个具有八个元素大小的数组中
D是正确的,str4所指向的存储空间是"string"所在的地方,所以A,B,D的str都指向了一个存储空间,唯独C没有指向,所以C是不能用的。
绝对让你满意~
===========
补充:楼上说str4指向了一个字面字符串,是不能更改的。这个在这道题目中是不需要考虑的,为什么他说不能更改?因为str4更改后,string这个字符串所在的存储空间因为没有被其他变量所指向或被定义,所以string所在内存会被释放,也就是消失,这个在编程中会造成数据丢失,应该避免,但是在这个题目中,是无妨的。
2012-05-24
展开全部
C,D不能正确调用。
str3这个指针没有指向某个具体的对象;
str4指向了一个字面字符串,是不能更改的。
str3这个指针没有指向某个具体的对象;
str4指向了一个字面字符串,是不能更改的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询