想请问一下在C语言中#define N 3 和 const int N=3这两个有区别吗

[复制链接]
查看11 | 回复4 | 2011-1-30 12:23:35 | 显示全部楼层 |阅读模式
有区别。#define N 3 是在预处理时处理,编译器扫描时将使用N的地方全部替换为3;const int N 3 是在编译的时候处理,编译器将在数据区生成一个只读(不可改变)变量。
回复

使用道具 举报

千问 | 2011-1-30 12:23:35 | 显示全部楼层
用的时候很少有区别但其实还是有区别的,比如const int N = 3这里加了类型int,而define N 3不加类型,从这个地方就能看出来define只是做文本替换(将N换成3),而const 定义常量的话会检查数据类型
回复

使用道具 举报

千问 | 2011-1-30 12:23:35 | 显示全部楼层
#define N 3是宏定义,在编译之前,编译器会把它在引用的地方进行原文替换,如果代码中多次引用了这个宏定义,编译器就在每个地方用宏定义的内容原文替换。const int N =3 的作用是变量时固定不变的,不能被修改,多次引用的时候,编译器到内存中N的位置去读取,而没有在每个位置都拷贝一个
回复

使用道具 举报

千问 | 2011-1-30 12:23:35 | 显示全部楼层
没区别。都是定义常量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行