前言
两天没更新了,作者在复习期末考试,更新一波,祝大家都能顺利通过期末考试!!!
指针相关博客
打响指针的第一枪:指针家族-CSDN博客
深入理解:指针变量的解引用 与 加法运算-CSDN博客
第一题
1. 下面程序段的运行结果是( )【多选】
char s[] = "12345", *p = s;
printf("%d\n", *(p+5));
A:字符 '\0' 的 ASCII 码值
B:0
C:字符 '5' 的地址
D:字符 '5'
答案及解析 AB
本题考查的是对指针➕整数和指针解引用
详谈【指针解引用】与【指针加整数】_指针解引用之后-CSDN博客
最后p + 5是 到达的\0的地址,解引用拿出来的就是\0,ASCII就是0
第二题
2. 以下程序中,while循环的次数是( )
int main()
{
int i = 0;
while(i < 10)
{
if(i < 1)
continue;
if(i == 5)
break;
i++;
}
}
A:1
B:10
C:6
D:死循环,不能确定次数
答案及解析 D
本题考查的是对while循环中的continue和break语句的认识
continue语句,不执行后面语句,直接返回循环条件部分
break语句,跳出当前循环
所以本题就是一直都是i = 0 < 1 ,一直循环
第三题
3. 下面3段程序代码的效果一样吗?
int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;
A:(2) = (3)
B:(1) = (3)
C:(1) = (2)
D:都不一样
E:都一样
答案及解析 C
const在*左边:指针指向的内容不可以改变,pointer to const
const在*右边,指针本身不可被改变,const pointer
第四题
4. 有定义 int a=2.b=3,c=4; 表达式的值为()
(a < b && !c)? ++b: a--
A:1
B:2
C:3
D:4
答案及解析 B
第五题
5. 下列代码的输出是()
#include <stdio.h>
void print(char *s)
{
if(*s)
{
print(++s);
printf("%c", *s);
}
}
int main()
{
char str[] = "Geneius";
print (str);
return 0;
}
A:\0suiene
B:neius
C:run-time error
D:suieneG
答案及解析 A
本题考查的是函数递归
在s取到\0的地址的时候结束递归,反向输出