程序员面试问题(二)

C语言部分(2)


3.      const与#define区别

a)      #define宏在预处理阶段展开

const 关键字是在编译运行阶段使用

注:C源程序->编译预处理->编译(->优化程序->汇编程序)->链接程序->可执行文件

b)      #define只是在预处理时展开,而const可能会分配内存

注:const常量是否占据存储空间取决于是否有引用该常量地址的代码。参考博客:

              http://blog.csdn.net/hippig/article/details/7829120

看下面一段代码,大家感受下什么是预处理阶段展开:

<span style="white-space:pre">	</span>#include <stdio.h>
<span style="white-space:pre">	</span>#define I void
<span style="white-space:pre">	</span>#define LOVE main(){
<span style="white-space:pre">	</span>#define CODING printf(“I LOVE CODING\n”);}

      


(程序在gcc 下编译通过)

c)      const 不要简单理解为常量,应当理解为 read only(《c 专家编程》)

感觉这篇博客不错:http://blog.csdn.net/jamestaosh/article/details/4348726

         d)  define 常见题目:

                  

 <span style="white-space:pre">	</span>#defineF(X) X+X
        int a = 3;
        int b = F(a)*F(a);
        printf(“%d\n”,b);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值