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符合要求。
正确答案选择B
由于存储poeple需要7个单位的存储空间,最后一个是'\0'
所以str1空间不足,A错误
str3是一个指针,没有开辟空间C错误
str4也是一个指针,指向一个常量,D错误