分析程序结果,分析过程我们就写在程序注释里面。

写出下列代码的输出内容

#include <stdio.h> 

int inc(int a)
{
return (++a);
} int multi(int *a, int *b, int *c)
{
return (*c = *a * *b);
} typedef int (FUNC1)(int in);
typedef int (FUNC2)(int *, int *, int *); void show(FUNC2 fun, int arg1, int *arg2)
{
FUNC1 *p = &inc;//p指针指向inc函数
int temp = p(arg1);//调用p后,参数arg1增1返回,下面传进来的参数是10,增1后返回temp=11
fun(&temp, &arg1, arg2);//调用fun位传进来multi,调用multi后,前两个参数指向的整数相乘,结构返回到第三个参数
printf("%d\n", *arg2);//即得到结果为*arg2 = 11*10 =110,所以结果是110
} int main()
{
int a;
show(multi, 10, &a);
return 0;
}

给出下面程序的答案:

#include <iostream>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct AA
{
int b1 : 5;
int b2 : 2;
}AA; int main()
{
AA aa;
char cc[100];
strcpy(cc, "0123456789abcdefghijklmnopqrstuvwxyz");
memcpy(&aa, cc, sizeof(AA));
std::cout << aa.b1 << std::endl;
std::cout << aa.b2 << std::endl;
return 0;
} /*
AA分别用5位和2位存放b1,b2,不到一个字节
执行完memcpy(&aa, cc, sizeof(AA));后,第一个字节的二进制位
00110000
则可以知道
b1 = 10000
b2 = 001
由于b1,b2都是int类型,默认转换成32位后会进行符号扩展,扩展后的二进制是
111111111111111111111111111 10000
00000000000000000000000000000 001
转换成十进制则分别为
-16
1
所以输出为
-16
1
*/

程序输出什么结果:

#include <stdio.h>

char *RetMemory()
{
char p[] = "hellow world";
return p;
} void Test()
{
char *str = NULL;
str = RetMemory();
printf(str);
} int main()
{
Test();
return 0;
}
//输出的内容是不确定的,因为临时变量p之行的内容,
//只在RetMemory中有效,返回指针,指针指向的内容是不可预知的

分析输出什么结果:

#include <stdio.h>

int main()
{
int arr[] = { 6, 7, 8, 9, 10 };
int *ptr = arr;//初始化ptr指向arr
* (ptr++) += 123;//ptr增1后指向7,再之行+=123运算,指向的内容7变为130(这时ptr指针没有变化)
printf(" %d %d", *ptr, *(++ptr)); //(参数一般是从右往左入栈,所以先执行右边表达式,ptr指针自增后,指向8)
//所以输出结果应该是 8 8
return 0;
}

如果有什么问题和疑问可以在下面留言互相探讨。

原题我已经上传到这里了http://download.csdn.net/detail/yincheng01/6461073 ,

解压密码为 c.itcast.cn

最新文章

  1. JS学习总结(新手)
  2. linux 时间同步
  3. nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡
  4. Unity基于响应式编程(Reactive programming)入门
  5. JDE函数--GetUDC(B函数)
  6. 本节向大家介绍一下UML建模误区
  7. [BZOJ 1004] [HNOI2008] Cards 【Burnside引理 + DP】
  8. 【转】 iOS 原生二维码扫描(可限制扫描区域)
  9. CentOS下安装无线网卡驱动 (转)
  10. 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构
  11. LPC同STM32的比较
  12. print、println与printf之间的区别
  13. Java并发之底层实现原理学习笔记
  14. java类路径classpath和包
  15. mysql根据出生日期查询年龄
  16. 内建模块collections的使用
  17. java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
  18. Qt编写的RTSP播放器+视频监控(ffmpeg版本)
  19. dotNet core 应用部署centos
  20. resource文件

热门文章

  1. Mvc--Html.ActionLink()用法
  2. Java中的流程控制(一)
  3. Socket缓冲区探讨,是否有拆包的方式?
  4. Dos命令之Netsh
  5. Windows Phone
  6. linux c in common use function reference manual
  7. ubuntu openstack
  8. Git怎样同一时候删除多个仓下的同一个分支
  9. BaseAdapter使listview设置不同背景图片并添加selector
  10. oracle 获取系统时间(转)