随记1(#define a 10和const int a=10)

正是求职笔试旺季,前几天听说有人遇到此题:#define a 10 和const int a=10的区别,废话不多说,下面来解释一下:

#define 指令是定义符号常量

const   定义的是常变量(变量的值不能改变)

符号常量只是用一个符号常量代替一个字符串,在预编译的时候进行替换回来。没有类型,在内存中不存在以符号长量命名的内存单元;

而变量是具有类型的,在内存中也存在着以它命名的内存单元,并且可以用sizeof测出他的长度

上面的区别也就是说第一个a是没有类型的,是一个符号常量

而第二个a为int型的,为一个值不能改变的变量

OK     了解了吗

时间: 2024-10-15 07:58:08

随记1(#define a 10和const int a=10)的相关文章

int *const && int const * && const int *的区别

ANSIC允许声明常量,常量和变量不同,常量就是不可以改变的量,用关键字const来修饰 比如:const int a int const a 以上两种声明方式是一样的,我们不需要考虑const和int的先后顺序,按照你理解的方便的一中方式进行应用. 因为const和int的顺序先后并不影响结果,因此 int const *   &&  const int *这两中情况就是一样的 所以我们只需要讨论两种情况 -----------------------------------------

iOS define 宏定义 和 const定义常量区别

const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于const 变量,系统只给了一个相应的内存地址,而#define则是给出了一个立即数.因为const变量是存放在内存的静态区域中,所以在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏在程序运行过程中所消耗的内存要比const变量的大得多.#define所定

C/C++中的const int*和int * const

代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int main(){ 6 const int *p; 7 int a = 2; 8 p = &a; 9 a = 5; 10 11 cout<<p<<" "<<*p<<endl; 12 13 int b = 10; 14 p = &b; 15 16 cout<<p<<"

喜闻乐见的const int *p、int* const p、const int* const p

不废话直接代码示例: 1 void f(const int *p) { 2 3 int b = 10; 4 5 *p = 10; // error 6 7 p = &b; // fine 8 9 } 10 11 void f(int* const p) { 12 13 int b = 10; 14 15 *p = 10; // fine 16 17 p = &b; // error 18 19 } 20 21 void f(const int* const p) { 22 23 int b

const int * 和 int * const 傻傻分不清楚

const int * a和int const *a一样,定义时不是必须初始化,指针可以指向其他变量,但是指向的变量的值不能修改. int * const定义时必须初始化,即必须指明指向哪个变量,定义后就不能再指向其他变量,但是指针指向的变量的值可以被修改. 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 //a和b是一样的,代表一个常整型数,必须手动初始化 6 const int a = 0; 7 int cons

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

const int *a和int *const a的区别

关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在那里1.const int *a 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象 eg:        const int *a = 0;        const int b = 1;        int c = 1;       a = &b  //  额外:注意不能通过a 来修改 b值       a = &a

varchar(10)与nvarchar(10)有什么区别

前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字 后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就是可以存10个字符或10个汉字 varchar(10)与nvarchar(10)就是分别占10个字节和20个字节