以下两道题小白求大神解释
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 19:37:10
以下两道题小白求大神解释
27. 以下程序的运行结果是().
main()
{ int a[]={1,2,3,4,5,6}, *p=a;
*(p+3)+=2;
printf("%d",*(p+3));
}
A.2 B. 3 C.5 D.6
28. 以下程序的运行结果是().
main()
{ char s[]="abcdefg",*p=s+2;
p[3]='\0';
printf("%s\n",p);
}
A.abc B. cde C. bce D.def
求解答过程
27. 以下程序的运行结果是().
main()
{ int a[]={1,2,3,4,5,6}, *p=a;
*(p+3)+=2;
printf("%d",*(p+3));
}
A.2 B. 3 C.5 D.6
28. 以下程序的运行结果是().
main()
{ char s[]="abcdefg",*p=s+2;
p[3]='\0';
printf("%s\n",p);
}
A.abc B. cde C. bce D.def
求解答过程
27.输出6
因为p指向a的起始地址,*(p+3)即是a[3](存放着4),
*(p+3)+=2;即是a[3]=a[3]+2;
最后即是输出a[3].
28.输出cde
因为*p=s+2;定义一个字符指针,并初始化为指向s[2](存放着'c'),p[3]='\0'即把s[5](即原存放‘f'的单元)置为‘\0’即字符串尾了.所以最后的输出就从c开始向后直到'\0'前一个字符结束.
因为p指向a的起始地址,*(p+3)即是a[3](存放着4),
*(p+3)+=2;即是a[3]=a[3]+2;
最后即是输出a[3].
28.输出cde
因为*p=s+2;定义一个字符指针,并初始化为指向s[2](存放着'c'),p[3]='\0'即把s[5](即原存放‘f'的单元)置为‘\0’即字符串尾了.所以最后的输出就从c开始向后直到'\0'前一个字符结束.