设有以下语句: char str1[]="string",str2[8],*str3,*str4="string"; 请给出解释谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:05:58
设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则 【】 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");

明显是D,str4指向字符串常量

严格说,C属于危险行为

最佳中提出的:str4指向了一个字符串,是不能更改的。这个在这道题目中是不需要考虑的。为什么他说不能更改?因为str4更改后,string这个字符串所在的存储空间因为没有被其他变量所指向或被定义,所以string所在内存会被释放,也就是消失,这个在编程中会造成数据丢失,应该避免,但是在这个题目中,是无妨的。

strcpy(str,"AAA")函数的作用就是把字符串AAA复制到str所指向的存储空间。C选项str3是个指针变量,因为定义中没有给他赋值,它没有所指向的存储空间。所以C选项这个是错误的。

个人认为是C,因为*str3之声明了一个指针,并没有对指针分配内存,没有分配没存就进行strcpy操作应该会出错