前置声明,操作符++和--的用法之我见

前置声明

  1、现象

  所谓前置声明是指一个类型在定义之前就被用来定义变量和声明函数。

  对于编译器来说,编译的源文件中可以前置声明各种未知是否定义的类型,但是需要使用该类型的话,就必须知道该类型的定义,编译器方可根据定义分配内存,否则编译器将会乐意的给你编译结果中报个错。

   

  代码正常编译,成功运行,如果代码中需要使用这两个类型来定义变量的话,编译由于无法得知具体类型,无法合理分配内存,会给你类型未定义的错。

 

  这个时候,如果需要使用Woods类型,可以包含具体定义该类型的,Wood.h,程序才能正常跑起来。

  2、应用

  目前有两个头文件A和B,在头文件A中定义类型A,在头文件B中定义类型B,如果B类型需要使用类型A,在A类型中需要使用类型B,这个时候如果头文件相互引用的话,是编译不通过的;这个时候前置声明就该发挥他的作用了,使用前置声明,编译器知道有这么一种类型存在,等到真正需要使用这个类型的时候,可以根据需要在运行给该类型分配内存。

 

操作符++和--以及在printf例子中的输出问题

  废话先不说,首先看一个例子吧

 

  为什么呢?

  首先前置++和后置++操作符大家用的都不少吧,前置++是在整个语句执行完成之前增加使用该操作的变量,后置++操作符是在整个语句执行完成之后增加使用该操作的变量,就是这么简单。

  printf是个函数,记得函数和临时变量都是在栈中申请空间的吗?参数是按照从左到右的顺序入栈的,所以在函数内部,使用参数的顺序是从右到左的,此时多余plus_plus变量:plus_plus初始值为1,接着++plus_plus之后,是2,plus_plus++之后,值还是2,完成该函数的调用后,值才增长为3。

  所以这里变量打印的顺序为2,2,1。如果认真思考细节和深入了解的话,里面包含的内容的还是比较多的,有兴趣的人了解函数va_start和ve_end对函数变长参数的处理,这里也有篇文章参考:http://zhuyunxiang.blog.51cto.com/653596/129767。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值