(27)若有定义int(*Pt)[3];,则下列说法正确的是 A)定义了基类型为int的三个指针变量 B)定义了

问题描述:

(27)若有定义int(*Pt)[3];,则下列说法正确的是 A)定义了基类型为int的三个指针变量 B)定义了
(27)若有定义int(*Pt)[3];,则下列说法正确的是
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt
C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
(32)有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*(x+i);}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=O;i<N/2;i++)
{printf("%d",a[i]);}
printf("\n");

程序运行后的输出结果是
A)1313
B)2234
C)3234
D)1234
(39)有以下程序
#include
main()
{ int a=2,b=2,c=2;
printf("%d\n",a/b&c);
}
程序运行后的输出结果是
A)O
B)1
C)2
D)3
帮我说一下27题为什么选D,32题为什么选C,39为什么选A,
1个回答 分类:综合 2014-11-17

问题解答:

我来补答
(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
 
 
展开全文阅读
剩余:2000
下一页:先解十一题