距2008年11月计算机软件资格考试不远了。大家一起来交流一下吧!优易学网站整理了2008年11月计算机软件资格考试考前练习!优易学网站和各位一起学习!希望各位能够顺利通过2008年11月计算机软件资格考试!
1.设有定义“int a=3, b,*p=&a;”,则下列语句中使 b不为3的语句是( )
① b=* &a;
② b=* p;
③ b=a;
④ b=*a;
2 .设指针x指向的整型变量值为25,则"printf("%d\n",++ *x);"的输出是( )
① 23
② 24
③ 25
④ 26
【解】定义有 int a=3, b,*p=&a;对b赋值的表达式有*&a、*p、a 、*a。引用变量。的值有两种方法,一是直接引用a,二是通过a的指针间接引用a。对于后者,又有多种表达方法,通过指向a的指针p,间接引用a的内容,如*p。或通过求地址运算符由变量a得到其指针&a,再由这指针表达式间接引用 a的内容,如* &a。所以表达式*&a、*p和a都能引用变量a的值,而使b的值为3。而表达式。a是错误的,因为a不是指针变量,不能对它施行取内容运算符。。所以解答是④。
【解】若指针变量x指向某个变量,例如指向变量v,并且变量v的值是25,则表达式++ *x的值是26。这是因为表达式的计算顺序可加圆括号表达成(++(*x)),首先是*x,是对X所指变量V的引用,所以++ *X就是++V。++V是先让变量V增1,并以增至后的V的值为表达式++V的结果,所以其值是 26。所以解答是④。