以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是

admin2021-06-15  37

问题 以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是

选项 A、char* str, name[10]; str  = "Hello World";
B、char* str, name[10]; name = "Hello World";
C、char str1[10] = "prog.c", str2[10]; str2 = str1;
D、char head_line[]; head_line = "=============";

答案A

解析 将字符指针变量初始化为一个字符串有两种方式,一种通过赋值运算使一个字符指针指向一个字符串常量:char* str;str  ="Hello World",A选项正确。另一种是定义一个字符指针变量,并且初始化为一个字符串的首地址:char* str="Hello World"。字符指针变量与字符数组都可以用来实现字符串的存储和运算,但二者是有区别的:(1)数组名是一个地址常量,而字符指针变量是一个变量,所以不能给一个数组名赋值,如name = "Hello World"错误,B选项错误;(2)字符型的指针变量的值是可以改变的;(3)字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,而指针只是一个存储字符串首地址的存储空间,所以相同类型指针可以相互赋值,而数组不能直接用"="赋值,C选项错误。数组不可以直接赋值字符串,head_line = "============="不合法,只有在数组初始化时可以直接赋值,如char head_line[]="============="合法,并且定义数组时必须指定数组长度,char head_line[]不合法,D选项错误。
转载请注明原文地址:https://jikaoti.com/ti/zcz0FFFM
0

最新回复(0)