char*const p表明p是一个指针,它只能指向一个字符串常

题目

char*const p表明p是一个指针,它只能指向一个字符串常量。

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

第1题:

说明语句"int (*p)(); "的含义是( )。

A.p是一个指向一维数组的指针变量

B.p是一个指针变量,指向一个整型数据

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.以上都不对


参考答案:C

第2题:

要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( )。

A.const char *p=”ABCD”;

B.char const *p=”ABCD”;

C.char *const p=”ABCD”;

D.const char *const p=”ABCD”;


参考答案:D

第3题:

已定义以下函数: fun(char*p2,char*p1) {while((*p2=*p1)!=’\0’){p1++;p2++;}} 函数的功能是( )。A.将p1所指字符串复制到p2所指向内存空间B.将p1所指字符串的地址赋给指针p2C.对p1和p2两个指针所指字符串进行比较D.检查p1和p2两个指针所指字符串中是否有’\0’


正确答案:A
将p1指向的字符赋给p2,然后再移向下一个字符,直到结束字符0为止,因此这是将p1所指的字符串复制到p2所指的内存空间。

第4题:

关于地址和指针,以下叙述正确的是( )。

A.可以通过强制类型转换让char型指针指向double型变量

B.函数指针P指向一个同类型的函数f时,必须写成:p=&f;

C.指针P指向一个数组f时,必须写成:p=ecf;

D.一个指针变量P可以指向自身


正确答案:A
函数指针P指向一个同类型的函数f时,可以写成:p=f,而不能写成材,选项B错误。函数名代表函数的入口地址,指针P指向一个数组f时,可以写成:P=f,也可写成&f,数组名f可以代表数组的首地址,选项c错误。指针变量指向的是地址,是个常量,不能将地址指向另—个地址,选项D错误。char型根据转化原则可以转化为double类型。因此答案为A选项。

第5题:

以下定义:int(*p)[4]中,标识符p是( )。

A.一个指向整型变量的指针

B.一个指针数组名

C.一个指针,它指向一个含有4个整型元素的一维数组

D.说明不合法


正确答案:C
解析:本题中相当于定义了一个二维数组intp[][4],标识符p是一个指针,指向一个含有4个元素的一维数组。

第6题:

若有定义:int (*p)[4]; 则标识符 p( ) 。

A. 是一个指向整型变量的指针

B. 是一个指针数组名

C. 是一个指针,它指向一个含有四个整型元素的一维数组

D. 定义不合法


正确答案:C

第7题:

说明语句int*(*p)();的含义是______。

A.p是一个指向int型数组的指针

B.p是指针变量,它构成了指针数组

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针


正确答案:D

第8题:

这程序有错吗?

/*写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址const char*p=NULL;int len=maxsubstr("qweohiuweyowohifpw",&p);输出:len=3,substr=ohi*/#include<stdio.h>#include<string.h>int maxsubstr(const char *str,const char **p){ int len=0,templen=0;//len为字符串中重复出现的最长字串的长度,templen为判断过程中字符串中重复出现的字串的长度 int size=strlen(str); const char*i=str,*j=0; //i=str即i=str[0],i指向字符串的第一个字符 for(i=str;i<str+size;i++){ //i依次指向字符串内的各个字符 const char *temp_i=i; //temp_i指向当前i所指字符 for(j=i+1;j<str+size;++j){ //j指向当前i所指字符的下一个字符,temp_i、j依次在总字符串中取两个字符串,temp_i在前,即在temp_i后寻找 与从temp_i开始的字符串重复长度最长的字符串 if(*temp_i==*j&&templen==0){ //此处前两个if可以合并,如果所指字符相同,temp_i往后指一个字符,j在第二个循环中会自动往后指(++j) ++templen; ++temp_i; } else if(*temp_i==*j&&templen!=0){ ++templen; ++temp_i; } else{ //当前所指字符不相等,temp_i需要指回i所指位置,j指回此次循环开始位置(由于for循环有++j,实际下次循环开始时往后指了一个) if(templen>len){ //判断重复出现的最长字串的长度是否改变 len=templen; templen=0; *p=i; }else{ templen=0; //就算重复出现的最长字串的长度不改变,当前长度也得清零。。。 } } } } return len;}int main(){ char str[10000]; const char*p=0; int len=0; int i=0; printf("输入带重复字符的字符串"); scanf("%s",str); len=maxsubstr(str,&p); printf("len=%d,substr=",len); for(i=0;i<len;i++){ printf("%c",*p++); } printf("\n");}


1.有错,因为给个重复的字符串,他的结果不正确 2.看不懂,所以自己编了个 #include <stdio.h> #include <string.h> void find_longest_repeat_str(const char str[], char longest_repeat_str[]); int main(int argc, char *argv[]) { char str[1024] = ""; char longest_repeat_str[1024] = ""; printf("输入字符串: "); scanf("%s", str); find_longest_repeat_str(str, longest_repeat_str); printf("The length of longest_repeat_str: %d\n", strlen(longest_repeat_str)); printf("Longest repeat string: %s\n", longest_repeat_str); return 0; } //找到最长的重复字符串 void find_longest_repeat_str(const char str[], char longest_repeat_str[]) { //原理:假设字符串是abcabcdabcdef,长度为13 int str_len = strlen(str); int i=0; char *j_pchar=NULL; char *k_pchar=NULL; //那么重复字符串的长度最长为13/2=6 //重复字符串的长度可能为6到1, for( i=str_len/2; i>=1; i-- ) { //当长度为6时,重复的字符串只可能由前13-6=7个字符组成, //重复的字符串的首地址只能为str+0到str+((13-6)-6) for(j_pchar=(char *)str; j_pchar<=str+str_len-i*2; j_pchar++) { //判断以j_pchar为首地址的字符串(长度为i), //是否在str后面部分有重复的.有重复的, //那么就找到了这个最长字符串 for(k_pchar=j_pchar+i; k_pchar<=str+str_len-i; k_pchar++) { if(strncmp(j_pchar, k_pchar, i)==0) { strncpy(longest_repeat_str, j_pchar, i); *(longest_repeat_str+i) = '\0'; return; } } } } *longest_repeat_str = '\0'; return; }

第9题:

若要用下面的程序片段使指针变量p指向一个存储字符型变量的动态存储单元,则应填入; char * p;p= ( ) malloc (sizeof (char));

A.char

B.char *

C.(* char)

D.(char *)


正确答案:D

第10题:

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

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

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

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

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


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