假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。

题目
假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。

Achar *p=s;

Bchar *p=&s;

Cchar *p;p=*s;

Dchar *p; p=&s;

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有下面的程序段:

char s[]="china"; char*p; p=s;

则下列叙述正确的是

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相同

C.s数组长度和p所指向的字符串长度相等

D.*p与s[0]相等


正确答案:D
解析:考查的是字符指针和字符数组的区别。选项A)中,s为数组名,是一个常量地址,而指针p为一个字符变量,不能说两者完全相同,所以选项A)错误。选项B)和C)的说法都不严谨,只有选项D)的说法正确。

第2题:

若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。

①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是【 】。

②若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是【 】。


正确答案:s=p+3; 2
s=p+3; 2 解析:若p指向了a[1],则p+3将指向其后的第3个元素a[4],把它赋值给s,s就指向了a[4],所以第1空填“s=p+3;”。由于s指向了a[2],p指向了a[0],s和p为指向同一个数组元素的指针变量,它们的差为它们指向元素的下标差值(即间隔多少个元素),所以“s-p”的结果为2。

第3题:

设char *s="\ta\018bc";则指针变量s指向的字符串所占的字节数 是 _______ 。

A.9

B. 5

C. 6

D. 7


参考答案:D

第4题:

语句Char(*P)说明了( )。

A.P是指向函数的指针,该函数返回一个Char型数据

B.P是指向Char型数据的指针变量

C.P是指向数组的指针变量

D.P是一个函数名,该函数的返回值是指向Char型数据的指针


正确答案:A
P是指向函数的指针,该函数返回一个char型数据。

第5题:

若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为( )。

A.两个语句都是将变量a的值赋予变量p

B.*p=a是使P指向变量a,而P=&a是将变量的值赋予变量指针p

C.*p=a是将变量a的值赋予变量b,而&;a是使P指向变量a

D.两个语句都是使p指向变量a


正确答案:C
“p”是指针变量,指向一个地址:“*p”为p指针所指向地址的内容。“&”是取变量地址。

第6题:

假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include<conio. h>

include<stdio. h>

void fun(char *a, char *p)

{

}

main ( )

char s[81],*t;

printf ("Enter a string: \n ");

gets (s);

t=s;

while (*t)

t++;

t--; /*指针t指向字符串尾部* /

while (*t== '*' )

t--; /*指针t指向最后一个字母*/

fun (s, t);

printf ("The string after deleted: \n");

puts (s);

}


正确答案:void fun(char *a char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/
void fun(char *a, char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/ 解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。

第7题:

在下列叙述中,错误的一条是______。

A.定义char*string="China"中的string是一个字符串变量,其值为China

B.若有一个多维数组a,则*(a+i)与a[i]等价

C.int(*p)[4]表示p为指针变量,它指向包含4个元素的一维数组

D.数组名代表数组的首地址,固定不变。指针变量可通过指向数组首地址来代表对应的数组,但其值可以改变


正确答案:A

第8题:

若有定义float a=25,b,*p=&b;,则下列对赋值语句*p=a;和p=&a;的正确解释为( )。

A.两个语句都是将变量a的值赋予变量p

B.*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针p

C.*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量a

D.两个语句都是使p指向变量a


正确答案:C
解析: “p”是指针变量,指向一个地址;“*p”为p指针所指向地址的内容。

第9题:

有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把节点b连接到节点a之后的语句是( )。 struct node { char data; struct node *next; }a,b, *p=&a,*q=&b;

A.a.next=q;

B.p.next=&b;

C.p->next=&b

D.(*p).next=q;


正确答案:B
解析:对象成员有两种访问方式:一个是通过对象名,使用“.”运算符来访问;另一个是通过指向对象的指针,使用“->”运算符来访问其成员。因此,选项B的访问方式是错误的。

第10题:

变量s的定义为“char *s="Hello world!";”,要使变量p指向s所指向的同一个字符串,则应选取(47)。

A.char *p=s;

B.char *p=&s;

C.char *p;p=*s;

D.char *p; p=&s;


正确答案:A
解析:按照要求,p应该定义为一个指向字符串的指针,它的值和s一样,所以选择A。

更多相关问题