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

题目
单选题
以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是(  )。
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=== == == == == == =;

参考答案和解析
正确答案: B
解析:
将字符指针变量初始化为一个字符串有两种方式,一种通过赋值运算使一个字符指针指向一个字符串常量:char*str; str="Hello World",A选项正确。另一种是定义一个字符指针变量,并且初始化为一个字符串的首地址:char*str="Hello World"。字符指针变量与字符数组都可以用来实现字符串的存储和运算,但二者是有区别的:①数组名是一个地址常量,而字符指针变量是一个变量,所以不能给一个数组名赋值,如name = "Hello world"错误,B选项错误;②字符型的指针变量的值是可以改变的;③字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,而指针只是一个存储字符串首地址的存储空间,所以相同类型指针可以相互赋值,而数组不能直接用“=”赋值,C选项错误。不能给数组名赋值.Head_line="== == == == == ="不合法,只有在数组初始化时可以直接赋值,如char head_line[]="==== == == == == ="合法,并且定义数组时必须指定数组长度,char head_line[]不合法,故D选项错误。答案选择A选项。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列关于字符数组的描述中,错误的是()。

A.字符数组中的每一个元素都是字符

B.字符数组可以使用初始值表进行初始化

C.字符数组可以存放字符串

D.字符数组就是字符串


正确答案:D

第2题:

下述对C语言字符数组的描述中错误的是

A.字符数组的下标从0开始

B.字符数组中的字符串可以进行整体输入/输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D.字符数组可以存放字符串


正确答案:C
解析:在C语言中,通过使用库函数允许对字符数组进行整体输入/输出。C语言不允许通过赋值运算符对字符数组整体进行赋值,对字符串使用符号:只能在说明字符数组并进行初始化的时候进行。字符串结束标志为'\0',计算字符串的实际长度时。不计入串长。

第3题:

设有如下程序段

char s[20]= "Be i jing",*p;

p=s;

则执行 p=s; 语句后,以下叙述正确的是

A) 可以用 *p 表示 s[0]

B)s 数组中元素的个数和 p 所指字符串长度相等

C)s 和 p 都是指针变量

D) 数组 s 中的内容和指针变量 p 中的内容相等


正确答案:A

第4题:

以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:( )


正确答案:C
字符串赋初值对于字符数组只能在定义时进行。因此选项A的赋初值是正确的。因为数组名是一个固定指针,不能再让其指向其他内存单元。选项C的赋初值是错误的。但选项D是用strcpy函数将字符串“abcdefg”复制到S数组的内存中,是正确的。选项B的tel=”abcdefg”,是利用字符串的长度决定数组长度(串长加1)并同时赋初值。对于字符指针,可以在定义时就指向别的内存单元,*s=t,也是正确的。所以只有C项不正确。

第5题:

下面是有关C语言字符数组的描述,其中错误的是( )。 A.不可以用赋值语句给字符数组名赋字符串S

下面是有关C语言字符数组的描述,其中错误的是( )。

A.不可以用赋值语句给字符数组名赋字符串

B.可以用输入语句把字符串整体输入给字符数组

C.字符数组中的内容不一定是字符串

D.字符数组只能存放字符串


正确答案:D
用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不作初始化赋值,则必须说明数组长度,还可用printf函数和scarlf函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出每个字符。通常用一个字符数组来存放一个字符串。所以D选项不正确。

第6题:

下列关于字符串的描述中,错误的是()。

A.一维字符数组可以存放一个字符串

B.二维字符数组可以存放多个字符串

C.可以使用一个字符串给二维字符数组赋值

D.可以用一个字符串给二维字符数组初始化


正确答案:C

第7题:

有以下程序includemain(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\

有以下程序 #include<string.h> main() { charp[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定


正确答案:A
解析: 在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

第8题:

下面是有关 C 语言字符数组的描述,其中错误的是

A) 不可以用赋值语句给字符数组名赋字符串

B) 可以用输入语句把字符串整体输入给字符数组

C) 字符数组中的内容不一定是字符串

D) 字符数组只能存放字符串


正确答案:D

第9题:

以下程序段十,不能正确赋字符串(编译时系统会提示错误)的是( )。

A.chars[10]="abedefg";

B.char t[]="abcdefS",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");


正确答案:C
解析:选项A中定义了一个字符型数组并赋初值,故选项A正确;选项B定义了一个字符型数组t并初始化,然后定义了一个指针变量s并让它指向t,故选项B正确;选项C先定义了一个长度为10的字符型数组,然后在给它赋值,这时应该分别给数组中的每个元素赋值,故选项c不正确:选项D中先定义了一个长度为10的字符型数组s,然后通过字符串拷贝函数将字符串“abcdefs”赋值给它,选项D正确。所以,4个选项中选项C符合题意。

第10题:

下面是有关c语言字符数组的描述,其中错误的是

A.不可以用赋值语句给字符数组名赋字符串

B.可以用输入语句把字符串整体输入给字符数组

C.字符数组中的内容不一定是字符串

D.字符数组只能存放字符串


正确答案:D
解析:字符数组中的内容既可以是字符,也可以是字符串,选项D)说法不正确。

更多相关问题