const分配内存的时机,编译器编译的时候分配内存

const相当于宏,用来取代c语言的#define

#include<iostream>
using namespace std;
void main()
{
int a = ;
const int b = ;
const int d = ;
int c = ;
//int array[a+c] linux gcc编译器支持
//int array[b+d] linux gcc编译器支持
printf("变量a,b,c的地址分别为%d %d %d\n",&a,&b,&c);
system("pause");
}

作用域和变量类型检测

#include<iostream>
using namespace std;
void func1()
{
#define a 5
const int b = ;
string name = "陈培昌";
int age = ;
}
void func2()
{
printf("a的值是%d",a);
}
void main()
{
func1();
func2();
system("pause");
}

纳尼~居然func2能访问func1中的常量!!!,如果我们禁止这类访问可以这样

#include<iostream>
using namespace std;
void func1()
{
#define a 5
const int b = ;
string name = "陈培昌";
int age = ;
#undef a
}
void func2()
{
printf("a的值是%d\n",a);
}
void main()
{
func1();
func2();
system("pause");
}

然而const类型则无法访问,说明const是严格限制作用域范围的

c++对c的扩展----什么时候分配内存的更多相关文章

  1. PHP扩展-生命周期和内存管理

    1. PHP源码结构 PHP的内核子系统有两个,ZE(Zend Engine)和PHP Core.ZE负责将PHP脚本解析成机器码(也成为token符)后,在进程空间执行这些机器码:ZE还负责内存管理 ...

  2. delphi 给字符指针分配内存

    今天,对接第三方dll的时候出现如下问题: 接口声明如下: long BL_tradeBalance (char *MerchantNumber,char *PosId,char *OperatorN ...

  3. @清晰掉 malloc是如何分配内存的?

    任何一个用过或学过C的人对malloc都不会陌生.大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉.但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至 ...

  4. 在dll里malloc/new/cvCreate分配内存,在exe里free/Releases释放内存时会出错。

    写了个程序,在DLL中用malloc分配了一块内存,但是在exe程序中释放,结果程序crash,原因就是:其原因可能是堆被损坏,这也说明 TestMySticker.exe 中或它所加载的任何 DLL ...

  5. C/C++二维数组分配内存

    //C++方式 double **Q=new double*[row];    //初始化Q矩阵 for(int i=0;i<row;++i) Q[i]=new double[POS_NUM]( ...

  6. DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?

    DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?比如我定义个变量 var p:Pchar;如果这个变量声明为全局变量,需要分配内存吗?分配为局部变量,需要分为内存吗?为什么 ...

  7. C语言 malloc calloc realloc alloc 在分配内存时的 区别

    malloc : 向堆申请分配内存,不初始化 calloc  : 向堆申请分配内存,初始化为0 realloc:  向堆申请分配内存,可调整大小 alloc   :   向栈申请内存,不需手动释放

  8. du: fts_read 失败: 无法分配内存

    今天在查看一个大的文件时突然报出一个du: fts_read 失败: 无法分配内存的错误. 用 ulimit -a 查看下 core file size (blocks, -c) 0 data seg ...

  9. linux设备驱动归纳总结(五):1.在内核空间分配内存【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-79134.html linux设备驱动归纳总结(五):1.在内核空间分配内存 xxxxxxxxxxxx ...

随机推荐

  1. 工作总结--CTO(张王岩)IO的正式使用

    4个抽象类 InputStreawm int read()  void close() OutputStream void write(int) void flush() void close() R ...

  2. JRE和JDK的作用和区别

    JVM(Java  Virtual Machine)是一个虚拟的用于执行bytecode字节码的“虚拟计算机”JRE(Java   Runtime  Environment):Java 虚拟机.库函数 ...

  3. [官网]Postgresql 的客户端应用 pg_config

    pg_config Name pg_config -- 检索已安装版本的 PostgreSQL 的信息 Synopsis pg_config {--bindir | --includedir | -- ...

  4. jmeter BeanShell实例-----两个变量之间的断言对比(转)

    jmeter BeanShell实例-----两个变量之间的断言对比 在jmeter的中,断言没法对两个变量的进行对比后判断,只能使用Bean Shell断言来进行,总是有人来问怎么写呢.这里写一个简 ...

  5. Java基础---Java方法的重载Overload

    对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦. 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样.好处:只需要记住唯一一个方法名称,就可以实 ...

  6. java--带参方法 递归阶乘

    package com.test.day01; // public class TestParam { public void f1(int n){ n =0; } public static voi ...

  7. java poi3.10.1基本excel使用

    效果: 代码: //时间 String checkTime = "yyyy/MM/dd"; //人员查询 Set preParticipantNames = new HashSet ...

  8. MongoDB 正则表达式查询

    正则表达式查询     $regex 注:^ 取反的意思  用特殊的转义字符需要在前面加一个斜杠 通过 ^取反 ,再通过$not取反,就可获得只包含一种类型的数据 \\d  数字 \\s  空格 \\ ...

  9. Go语言学习笔记(6)——指针

    指  针 指针: 存储另一个变量的内存地址的变量: Go语言的取地址符号也是& 1. 声明指针: var needle_name *type var b int = 10 var a *int ...

  10. MyBatis 源码篇-MyBatis-Spring 剖析

    本章通过分析 mybatis-spring-x.x.x.jar Jar 包中的源码,了解 MyBatis 是如何与 Spring 进行集成的. Spring 配置文件 MyBatis 与 Spring ...