当前位置:首页 > c语言答案
*p=*q;语句 4.已有定义int k=2; int *ptr1, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B )。 A.k=*ptr1+*ptr2; B.ptr2=k; C.ptr1=ptr2; D.k=*ptr1*(*ptr2); 5.以下程序运行结果是( B )。 sub(int x ,int y ,int *z) { *z=y-x;} main()
{ int a ,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf(\}
A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7 6.下面程序段的运行结果是( A )。 char *s=\s+=2;
printf(\
A.cde B.字符'c' C.字符'c'的地址 D.无确定的输出结果 7.若有以下定义,则对a数组元素地址的正确引用是(B )。 int a[5],*p=a;
A.*&a[5] B.a+2 C.*(p+5) D.*(a+2) 8.若有以下定义,则对a数组元素地址的正确引用是( A )。 int a[5],*p=a; A.p+5 B.*a+1 C.&a+1 D.&a[0] 9.若有以下定义,则p+5表示( A )。 int a[10],*p=a;
A.元素a[5]的地址 B.元素a[5]的值 C.元素a[6]的地址 D.元素a[6]的值 10.若有以下定义,且0≤i<6,则正确的赋值语句是( D )。 int s[4][6],t[6][4],(*p)[6]; A.p=t; B.p=s; C.p=s[i]; D.p=t[i]; 11.下面程序段的运行结果是(A )。 char *format= \int a=1,b=10; a+=b;
printf(format, \
A.for, \ B.format, \C.a+=b,a=11,b=10 D.以上结果都不对 12.下面程序段的运行结果是( D )。 char *p= \int a=111,b=10,c; c=a%b; p+=3;
printf(p,c,a,b);
A.1,a=111,b=10 B.a=1,b=111 C.a=111,b=10 D.以上结果都不对 13.下面程序的运行结果是( A )。 #include \
fun (int **a,int p[2][3]) { **a=p[1][1];} main ()
{ int x[2][3]={2,4,6,8,10,12},*p; p=(int *)malloc(sizeof(int)); fun (&p,x);
printf (\}
A.10 B.12 C.6 D.8 14.设有如下定义,则以下说法中正确的是( C )。 char *aa[2]={\
A.aa数组元素的值分别是\和ABCD\B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有四个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 15.设有以下定义,则下列能够正确表示数组元素a[1][2]的表达式是( D )。 int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*prt)[3]=a,*p=a[0];
A.*((*prt+1)[2]) B.*(*(p+5)) C.(*prt+1)+2 D.*(*(a+1)+2) 16.下列程序的输出结果是( B )。 main()
{ int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p;
printf(\printf(\} A.4 4 B.2 2 C.2 4 D.4 6 17.执行以下程序后,y的值是( C )。 main ()
{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];
for(x=0;x<3;x++) y+=*(p+x);
printf(\}
A.17 B.18 C.19 D.20 18.设有如下定义,则执行语句*--p;后*p的值是( B )。 int a[5]={10,20,30,40,50},*p=*a[2];
A.30 B.20 C.19 D.29 19.设有如下定义,则下列程序段中正确的是( C )。 char *st=\
A.char a[11], *p; strcpy(p=a+1,&st[4]); B.char a[11]; strcpy(++a, st); C.char a[11]; strcpy(a, st); D.char a[], *p; strcpy(p=&a[1],st+2); 20.若有以下说明和定义,在必要的赋值之后,对fun()函数的正确调用语句是( B )。 fun(int *c){ } main()
{ int (*a)()=fun,*b(),w[10],c; ┆ }
A.a(w); B.(*a)(&c); C.b=*b(w); D.fun (b); 21.有如下程序,该程序的输出结果是( C )。 main()
{ char ch[2][5]={\int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++)
for(j=0;p[i][j]>'\\0';j+=2) s=10*s+p[i][j]-'0'; printf(\}
A.69825 B.63825 C.6385 D.693825 二、填空题
1.指针运算符&和*分别称为 取址运算 和 取值 运算。 2.当用指针变量作为函数参数时,此时的参数传递是 地址 传递。 3.对于二维数组arr[5][5],arr,*arr,&arr[0],arr[2]+3,*(arr+2), *(arr[2]+3)的含义分别是 5行5列元素值,0行地址,0行0列地址,0行地址,2行3列元素地址,2行0列地址,2行3列元素值 。 4.函数的指针是 函数入口地址 。 5.返回指针值的函数是 指针类型的函数 。 6.若有说明语句 int a[3]={1,3,5},*p=a;则*++p,*p++,*p+1的值分别是 3,1,2 。 7.指针变量是把内存中另一个数据的 首地址 作为其值的变量。 8.当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以是 整型数组名、 指向整型数据的指针值 等。 9.如果程序中已有定义:int k; ⑴定义一个指向变量k的指针变量p的语句是 int *p=&k 。 ⑵通过指针变量,将数值6赋值给k的语句是 *p=6 。 ⑶定义一个可以指向指针变量p的变量pp的语句是 int **pp 。 ⑷通过赋值语句将pp指向指针变量p的语句是 pp=&p 。 ⑸通过指向指针的变量pp,将k的值增加一倍的语句是 (**pp)*=2 。 10.下面程序段的运行结果是 ef 。 char str[]=\printf(\
共分享92篇相关文档