当前位置:   article > 正文

部分真题整理2_声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回

声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回
1、声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是(C)
  1. int *p[10])(int*)
  2. int [10]*p(int *)
  3. int (*(*p)[10])(int *)
  4. int ((int *)[10])*p
以上选项都不正确
解析:
int (*(*func)[5])(int *p);
func被一个圆括号包含,左边又有一个*,那么func是一个指针,跳出括号,右边是一个[]运算符号,说明func是一个指向数组的指针,现在往左看,左边有一个*号,说明这个数组的元素是指针,再跳出括号,右边又有一个括号,说明这个数组的元素是指向函数的指针。总结一下,就是:func是一个指向数组的指针,这个数组的元素是函数指针,这些指针指向具有int*形参,返回值为int类型的函数。
详见:http://blog.csdn.net/u011385799/article/details/47783555


2、 一个进程从执行状态转换到阻塞状态的可能原因是本进程(BD)。
时间片完
需要等待其他进程的执行结果
执行了V操作
执行了P操作
解析:
运行态:进程占用CPU,并在CPU上运行;
就绪态:进程已经具备运行条件,但是CPU还没有分配过来;
阻塞态:进程因等待某件事发生而暂时不能运行; 进程在一生中,都处于上述3中状态之一。
运行---》就绪: 时间片用完。
就绪---》运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
运行---》阻塞:发生了I/O请求或等待某件事的发生
阻塞---》就绪:进程所等待的事件发生,就进入就绪队列
P操作是阻塞作用
V操作是唤醒作用


3、已知如下代码,并在两个线程中同时执行f1和f2,待两个函数都返回后,a的所有可能值是哪些?(ABCD)

  1. int a = 2, b = 0, c = 0;
  2. void f1()
  3. {
  4. b = a * 2;
  5. a = b;
  6. }
  7. void f2()
  8. {
  9. c = a + 11;
  10. a = c;
  11. }
4
13
15
26

解析:

考虑四行代码的执行顺序即可
(1)b=a*2,c=a+11,a=c,a=b a=4
(2)b=a*2,c=a+11,a=b,a=c a=13
(3)b=a*2,a=b,c=a+11,a=c a=15
(4)c=a+11,a=c,b=a*2,a=b a=26


4、以下程序段的输出结果是(A)
  1. char s[]="\\123456\123456\t";
  2. printf("%d\n",strlen(s));
12
13
16
以上都不对
解析:
char s[] = "//123456/123456/t";
这样strlen(s)输出17.
char s[] = "\\123456\123456\t";
这样strlen(s)输出12.
计算字符串长度时关键是要注意辨认转义字符;
含转义字符的有:
\\ 表示字符 \
\
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/731421
推荐阅读
相关标签
  

闽ICP备14008679号