一、判断题
*若有定义int a[]={2,4,6,8,10},p=a;a的值是数组首地址,则 (p+1)的值是4。
自己T
正确F
因为
* (p+1)=a[1]=4
* 而 ** (p+1)为 *( *(p+1))意思是二维数组的第一行第0个元素;
二、选择题
下列程序段的输出是____。
int c[]={1, 3, 5};
int *k=c+1;
printf("%d", *++k);
思想:*与++优先度一样,从右往左结合,故先算k+1,再取k[2];
2-7
下列程序执行后的输出结果是( )。
main( )
{ char a[10]={9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, p=a+5;cout<<–p; }
cout<<*–p 意思是输出该值;
2-8
**下列程序执行后的输出结果是( )。
main( )
{ int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, p;p=a;cout<<p+9; }
由于符号优先性,先执行*p,后加9,故结果是9;
2-9
下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。
A.int a, *x = a;
B.int a, *x = &a;
C.int *x = &a, a;
D.int a, x = a;
自己C
错因:a要先定义,才能有a的地址
正确B
2-12
int *p,a=10,b=1;
p=&a; a=*p + b;
执行该程序段后,a的值是11
自己,什么是常量什么是变量;
常量就是 程序运行中 不可以改变的量(数据)
变量 它其实就是内存一个小区域,用来保存数据的!
由于数据可以改变 所以叫变量
如何初始化指针
1.int *p1=&a;
2.int *p2;p2=&a;