A. &aa[0]+1 B. &aa[1] C. &aa[0]++ D. aa+1
【答案】C
【考点解析】C选项中不能对地址进行自加操作。
【例21】(2002年4月)在说明语句:int *f();,标识符f代表的是( )。
A. 一个用于指向整型数据的指针变量。
B. 一个用于指向一维数组的行指针。
C. 一个用于指向函数的指针变量。
D. 一个返回值为指针型的函数名。
【答案】D
【考点解析】函数的返回值可以是指针,这种函数的定义形式如下:
数据类型 *函数名(参数表)
【例26】(2003年4月)有以下程序
main()
{ char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是()。
A. n,two B. t,one
C. w,one D. o,two
【答案】C
【考点解析】字符指针p通过赋值指向字符指针数组s中第二个字符串"two",*(p+1)表示第二个字符串的第二个字符"w",s[0]表示第一个字符串”one”的首地址。
【例27】(2003年4月)有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("%d\n",s[2]);
}
执行后输出结果是()。
A. 随机值 B. 0
C. 5 D. 6
【答案】B
【考点解析】s先指向数组第四个元素5,s[2]表示s之后的第二个元素0。
【例33】(2003年9月)若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是( )。
A. int *i=NULL; B. float *f=NULL;
scanf("&d",i); *f=10.5;
C. char t="m", *c=&t; D. long *L;
*c=&t; L='\0';
【答案】D
【考点解析】C语言中NULL表示空指针,对空指针所指的内容操作是没有意义的,所以选项A和B是错误的;选项C中*c=&t是错误的,不能把字符型变量t的地址赋值给字符型指针所指的内容。
【例34】(2003年9月)有以下程序
#inc1ude
main()
{ printf("%d\n", NULL); }
程序运行后的输出结果是( )。
A. 0 B. 1
C. -1 D. NULL没定义,出错