指向字符常量的指针
指向字符的常量指针
指向字符串常量的指针
指向字符串的常量指针
第1题:
已知类A有公用数据成员a,且有A ohj2;A*const ptr-new A;则下列语句正确的是( )。
A)ptr->a=100;
B)ptr=&obj2;
C)ptr++;
D)ptr=obj2;
本题主要考察const的使用,const根据其位置的不同修饰不同的成份,从而表现出灵 活的特性,考生容易混淆。此处const修饰的是指针,即指针本身不能改变.故选项B、C和D都是 错误的。但是指针指向的地址里面的值确实可以改变的,因此选项A是正确答案。
第2题:
已知类A有公用数据成员a,且有A obj2;A*const ptr=new A;则下列语句正确的是
A.ptr->a=100;
B.ptr=&obj2;
C.ptr++;
D.ptr=obj2;
第3题:
下列程序的输出结果是
#inClUde<iostream>
using namespace std;
intmain()
{
Char a[]="HellO,World";
Char*ptr=a;
while(*ptr)
{
if(*ptr>='a'&& *ptr <='Z')
cout<<char(*ptr+'A' -'a');
else cout<<*ptr;
ptr++;
}
retur0;
}
A.HELLO,WORLD
B.Hello,world
C.hELLO,wORLD
D.hellO,world
第4题:
设有下列程序段: char str[]="HelloWorld": char* plr; ptr=str: 执行上面的程序段后,*(ptr+10)的值为( )。
A. \0
B.0
C.不确定的值
D.0的地址
第5题:
main函数中发生编译错误的语句是______。
include<iostream.h>
class A
{
public:
int a;
const int b;
A( ):a(10),b(20){}
void fun( )const
{
cout<<"a="<<a<<"\tb="<<b<<endl;
}
};
void main( )
{
A obj1;
const A*ptr=new A;
ptr=&obj1;
ptr->a=100;
ptr->fun( );
}
第6题:
设有以下程序段:
struct MP3
{ char name[20];
char color;
float price;
}std,*ptr;
ptr=&std:
若要引用结构体变量std中的color成员,写法错误的是( )。
A.std.color
B.ptr->color
C.std->color
D.(*ptr)color
本题中要引用结构体变量std中的color,要使用指针,而std.color不是一个指针类型,所以答案选择A。
第7题:
阅读下列函数说明、图和C代码,回答问题
[说明]
在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树。
程序构造一棵二叉排序树,每个节点存储一个单词,按字典序列,较小的在左子树,较大的在右子树。
函数中使用的预定义符号如下:
typedef struct TreeNode{/*二叉排序树节点*/
char *word;
struct TreeNode *left, *right;
}BNODE;
[函数]
int getWord(FILE *fpt, char *word)
/*从文件fpt中读取单词到word中,到达文件结束时返回0*/
{
char c;
c = fgetc(fpt);
if(c == EOF)return 0;
/*跳过单词间的非字母字符*/
while(!(tolower(c) >= 'a' && tolower(c) <= 'z')){
c = fgetc(fpt);
if(c == EOF)return 0;
}
/*不区分大小写*/
while(tolower(c) >= 'a' && tolower(c) <= 'z'){
*word++ = c;
c = fqetc(fpt);
}
*word = '\0';
return 1;
}
void BTree(BNODE **t, char *word)
{
BNODE *ptr, *p;
int compres;
p = NITLL;
(1) ;
while(ptr){
compres = strcmp(word, (2) );
if(!compres){
return;
}else{
(3) ;
ptr = compres > 0 ? ptr->right : ptr->left;
}
}
ptr = (BNODE*)malloc(sizeof ptr);
ptr->left = ptr->right = NULL;
ptr->word = (char*)malloc(strlen(word) + 1);
strcpy(ptr->word, word);
if(p == NULL){
(4) ;
}else if(compres > 0){
p->right = ptr;
}else{
p->left = ptr;
}
}
int main()
{
FILE *fpt;
char word[40];
BNODE *root = NULL;
if((fpt = fopen("text.in", "r")) == NULL){
printf("不能打开文件text.in! \n");
return 1;
}
while(getWord(fpt, word) == 1){
BTree (5) ;
}
fclose(fpt);
return 0;
}
第8题:
已知类A有公用数据成员a,并重载了一运算符,且有A obj2;const A*ptr=new A;则下列语句错误的是( )。
A.ptr->a=100;
B.ptr=&obj2;
C.ptr++;
D.obj2=*ptr;
本题考察const修饰符的作用。注意:const位置不同,其修饰的部分也是不同的。本题中const修饰的是ptr所指的对象本身,所以,ptr是可以重新指向新的对象,而ptr->a则无法被更新。
第9题:
下面程序的输出结果是( )。 include<stdio.h> main() {static char a[]="china"; char*ptr=a; while(*ptr) {printf("%c",*ptr-32); ptr++; } }
第10题:
下列有关指针的用法中错误的是( )。
A.int i;int *ptr=&i;
B.inti;int *ptr;i=*ptr;
C.int *ptr;ptr=0;
D.int i=5;int *ptr;*ptr&i;