指针相关博客
第一题
- 下面字符常量正确的是( )
A:"c"B:'\\''
C:'n'
D:'ab'
答案及解析 C
A:错误,A是字符串不是字符常量
B:错误,转移字符高亮显示为:'\\''也就是这里面一共有2个字符,格式错误
C:正确
D:错误,两个字符不可以用 ' ',格式错误
第二题
- 以下函数值的类型是()
cpp
fun (float x)
{
float y;
y = 3 * x - 4;
return y;
}
A:int
B:不确定
C:void
D:float
答案及解析 A
C语言中没有写函数返回值类型,默认是int类型,函数返回值以函数返回值类型为准,如果return的类型和返回值类型不匹配,要发生隐式类型转换
第三题
- 下面程序段执行后的输出结果是()(□表示一个空格)
cpp
int a=3366;
printf("│%-08d│",a);
A:│-0003366│
B:│00003366│
C:│3366□□□□│
D:输出格式非法
答案及解析 C
本题考查的是%md的打印,负号代表的是左对齐,d前面的数字大于要打印的位数,就补空格。
第四题
- 数组a的定义为:int a[3][4]; 下面哪个不能表示 a[1][1]
A:*(&a[0][0] + 5)B:*(*(a + 1) + 1)
C:*(&a[1] + 1)
D:*(a[1] + 1)
答案及解析 C
做这个题之前,可以看看上面两个博客
交给大家一个任务,自己画图发在评论区哦,看看自己对指针的理解
第五题
- 以下程序调用fun 函数后输出数组中最大值及对应元素的下标,横线处添()
cpp
#include <stdio.h>
void fun(int *s, int n, int *k)
{
int i;
for (i = 0, *k = i; i < n; i++)
if (s[i] > s[*k])
________;
}
int main()
{
int a[5] = {1, 6, 2, 8, 0}, k;
fun(a, 5, &k);
printf("%d %d\n", k, a[k]);
}
A:*k = i
B:k = i
C:*k = i - s
D:k = i - s
答案及解析 A
本题考查的是大家看代码的能力,是让k得到的是最大值的数组下标,k属于输出型参数,也就是会在函数调用之后使用的。所以在函数体内部,就要去更新*k的下标,最后要成为最大值的下标,那一定是对*k的更新,BD排除。if语句中,如果s[i]大于s[*k],那就更新*k = i。