C或C#中define和const的区别

在C或者C#里,#define声明的常量宏和const声明的常量有什么区别?比如我听说#define的不占内存 const占内存

你好一、首先,给你个形象的例子让你明白: 如果说JAVA好比是奔4,C语言就是386电脑了。 两者都是编译语言,但是后者是计算机发展中的一个基础语言,而JAVA则是新兴的功能更加强大的编写语言。 二、其次,再给你详细一些的说明两者的区别: 1. Java没有预处理指令。(如C中的#define , #include , #ifdef等)。C中的常量定义在Java中用static final来取代。 2. Java中没有C中的全局变量。 3. Java中的主类型的size是确定的,而C中主类型的size跟平台相关。 4. Java中没有了指针,它使用了类似的句柄来取代指针,但是Java中不允许对句柄进行加减,没有取地址操作符之类的东东。 5. Java有垃圾收集机制,不需要自己释放空间。 6. Java没有goto语句。Java在C提供的控制语句基础上增加了异常处理和标签break和continue语句。这些可以替代goto的作用。 7. C要求一个方法或块中使用的所有局部变量的定义在该方法或块的最开始处定义,而Java允许这些定义在方法或块的任意地方出现。 8. Java不要求在调用一个函数以前已经定义了该函数,可以在调用点后面定义。而C有这个要求。 9. Java不支持C中的strut 和 union类型。Java支持方法重载。 10. Java不支持C中的enum关键字。 11. Java不支持C中的bitfields能力。 12. Java不支持C的typedef。 13. Java不支持C的方法指针。 14. Java不支持C的可变参数表。 三、最后,再向你介绍一下JAVA与C#的区别: 1.属性: java中定义和访问均要用get和set方法,可以不成对出现。 c#中是真正的属性,定义时get和set必须同时出现,房问时用.号即可。不用get,set 2.对象索引 就是对象数组 public Story this [int index] ; int x[] = ; 但在C#中,只有第一行代码合法,[]不能放到变量名字之后。 13.与Java不同的是,C#允许为名称空间或者名称空间中的类指定别名: using TheConsole = System.Console; 14.在Java中,包的名字同时也是实际存在的实体,它决定了放置.java文件的目录结构。在C#中,物理的包和逻辑的名称之间是完全分离的 .NET中包的实体称为程序集(Assembly)。每一个程序集包含一个manifest结构。manifest列举程序集所包含的文件,控制哪些类型和资源被显露到程序集之外,并把对这些类型和资源的引用映射到包含这些类型与资源的文件。程序集是自包含的,一个程序集可以放置到单一的文件之内,也可以分割成多个文件。.NET的这种封装机制解决了DLL文件所面临的问题,即臭名昭著的DLL Hell问题。 15.在Java中,java.lang包是默认的包,C#中不存在默认的包 16.C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#有5种类型的可访问性,如下所示: public:成员可以从任何代码访问。 protected:成员只能从派生类访问。 internal:成员只能从同一程序集的内部访问。 protected internal:成员只能从同一程序集内的派生类访问。 private:成员只能在当前类的内部访问。 17.由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词 18.与Java不同,C#中的接口不能包含域(Field)。 另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。例如,下面的C#接口将产生一个编译错误。 19.C#中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的操作符。as操作符与is操作符非常相似,但它更富有“进取心”:如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则,它把变量引用

如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-23
define预定义,只是符号,肯定不占内存,它的作用只是把一串字符用一个符号表示,在编译的时候已经处理了。const是常量,肯定要分配内存本回答被网友采纳
第2个回答  2013-07-23
define说白了,它的作用只是查找替换的功能,const是一个常量的定义,用const的除非你用指针强改它,不然会报错的!
第3个回答  2013-07-23
const是常量, 系统要分配内存来存储这个常量的值而且下面的代码如果要尝试修改这个值, 会报错的
相似回答