(27)若有定义int(*Pt)[3];这种声明可以先把变量名字去掉,也就是int (*)[3],对于*可以这样理解,char *s 等同于char s[],所以可以理解为int pt[][3],也就是D中的解释
而对于int *pt[3],则不相同了,首先pt是一个数组,然后,*用来修饰这个数组,也就是pt是三个元素都是int指针的数组名.
(32)有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*(x+i);} /* *(x+i)就是x[i],*x就是x[0],此函数的功能应该很清楚了 */
main()
{int a[N]={1,2,3,4,5,6,7,8},i; /*数组下标从0开始*/
fun(a,2); /*a[0]= a[2] 也就是3*/
for(i=O;i<N/2;i++)
{printf("%d",a[i]);}
printf("\n");
}
程序运行后的输出结果是 C)3234
(39)有以下程序
#include
main()
{ int a=2,b=2,c=2;
printf("%d\n",a/b&c); /*除法运算符号,c语言运算符优先级先看一看这个地方的
先执行a/b结果是1,再执行1&2,这个运算符是按位与运算,转换成二进制两个数是 01和 10,对应位都是1才为1,否则为0,所以结果为0*/
}
程序运行后的输出结果是0