1-1 可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。
对
1-2 int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。
错
int *p[4]; //定义一个指针数组,该数组中每个元素是一个指针,
int (*p)[4]; //定义一个数组指针,该指针指向含4个int型元素的一维数组,
区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。
int *p[n]; 中,运算符[ ]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组。
int (*p)[n]; 中( )优先级高,首先说明p是一个指针,指向一个整型的一维数组。
1-3 函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。
对
1-4 指向结构体变量的指针可以作函数参数,实现传址调用。
对
1-5 字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串。
对
2-1关于new运算符的下列描述中,()是错误的。4
- 它可以用来动态创建对象和对象数组;
- 使用它创建的对象或对象数组可以使用运算符delete删除;
- 使用它创建对象时要调用构造函数;
- 使用它创建对象数组时必须指定初始值;
2-2const int *p说明不能修改()。2
- p指针;
- p指针指向的变量;
- p指针指向的数据类型;
- 上述A、B、C三者;
const int *p;//指向⼀个整数常量的指针变量
常量指针(Constant Pointers)
int * const p//先看const再看* ,是p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向的地址上存储的值可以修改。
指向常量的指针(Pointers to Constants)
const int *p//先看*再看const,定义一个指针指向一个常量,不能通过指针来修改这个指针指向的值。
2-3变量的指针,其含义是指该变量的( )2
- 值
- 地址
- 名
- 一个标志
2-4根据声明int (*p)[10]
, p
是一个( )。2
- 数组
- 指针
- 函数
- 数组的元素
2-5(2018final)以下函数返回指针 a 所指数组中最小值所在的下标值:
fun(int *a, int n)
{ int i, j=0, p;
p=j;
for(i=j; i<n; i++)
if(a[i]<a[p]) ——————;
return(p); }
在下划线处应填入的是( )。4
- i=p
- a[p]=a[i]
- p=j
- p=i
2-6以下程序的输出结果是( )。2
main( )
{ char a[10]={'1', '2', '3', '4', '5', '6', '7', '8', '9', '\0'}, *p;
int i;
i=8;
p=a+i;
cout<<p-3; }
- 6
- 6789
- ' 6'
- 789
2-7若已定义: int a[9], *p=a;并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的 表达式是( )。3
- p+1
- a+1
- a++
- ++p
2-8已知int a,*pa=&a,输出指针pa 十进制的地址值的方法是( )。4
- cout<<pa;
- cout<<&pa;
- cout<<*pa;
- cout<<long(&pa);
2-9下列程序执行后的输出结果是( )。3
main( )
{ char a[10]={9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p=a+5;
cout<<*--p; }
- 非法
- a[4]的地址
- 5
- 3
2-10若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。2
- p++
- x++
- *(p++)
- &x++
2-11若有定义: int (*p)[4]; 则标识符p____。3
- 是一个指向整型变量的指针
- 是一个指针数组名
- 是一个指针,它指向一个含有四个整型元素的一维数组
- 定义不合法
2-12下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。2
- int a, *x = a;
- int a, *x = &a;
- int *x = &a, a;
- int a, x = a;
2-13根据声明int a[10], *p=a;
,下列表达式错误的是( )。3
- a[9]
- p[5]
- a++
- *p++
2-14若p1
、p2
都是整型指针,p1
已经指向变量x
,要使p2
也指向x
, ( )是正确的。1
p2 = p1;
p2 = **p1;
p2 = &p1;
p2 = *p1;
2-15以下哪个定义中的p
不是指针,请选择恰当的选项:3
char **p;
char (*p)[10];
char *p[6];
- 给出的三项中,
p
都是指针
2-16以下说法正确的是()。3
- 在静态成员函数中可以调用同类的其他任何成员函数
- const成员函数不能作用于非const对象
- 在静态成员函数中不能使用this指针
- 静态成员变量每个对象有各自的一份
2-17下列程序的输出是()。4
#include<stdio.h>
int main(void)
{
int a[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *p[4], i;
for (i = 0; i < 4; i++)
p[i] = &a[i*3];
printf("%d\n", p[3][2]);
return 0;
}
- 上述程序有错误
- 6
- 8
- 12
2-18存在定义int a[10], x, *pa; , 若pa=&a[0], 下列的哪个选项和其他3个选项不是等价的?1
- x=*pa;
- x=*(a+1);
- x=*(pa+1);
- x=a[1];
2-19int *p 的含义是2
- p是一个指针, 用来存放一个整型数
- p是一个指针, 用来存放一个整型数据在内存中的地址
- p是一个整型变量
- 以上都不对
2-20以下哪个选项中的p
不是指针:3
int **p;
int (*p)[5];
int *p[6];
-
struct Stu{ char name[20]; int age; }*p, q;
2-21设有下面的程序段:char s[]="china";char *p=s;则下列叙述正确的是____。1
- 数组s中的内容和指针变量p中的内容相等
- s和p完全相同
- s数组长度和p所指向的字符串长度相等
- *p与s[0]相等
2-22在基类型相同的两个指针变量之间,不能进行的运算是( )。3
- <
- =
- +
- –
2-23在说明语句“ int *f( );”中,标识符 f 代表是( )。4
- 一个用于指向整型数据的指针变量
- 一个用于指向一维数组的行指针
- 一个用于指向函数的指针变量
- 一个返回值为指针型的函数名