深入理解c/c++之从编译器角度理解变量和指针
2017-01-12 00:33
344 查看
变量的定义
变量的访问
指针的定义和访问
void 指针
指针的自增
例如: int a;
作用: 编译器申请sizeof(类型)个字节的存储空间,系统返回申请的地址,编译器写入标识符表:[a,地址,int],
标识符表:(1)变量名,(2)变量地址,(3)类型
说明语句: 类型 * 变量名;
如果一个指针变量类型为int, 则通过指针变量访问对象时,读取从指针存储的地址开始连续读取4个字节,并按整型数据解释。
例子:
&a = &b 是错误的,因为地址是固定的,是常量,不能改变
变量的访问
指针的定义和访问
void 指针
指针的自增
变量的定义
说明语句: 类型 变量名例如: int a;
作用: 编译器申请sizeof(类型)个字节的存储空间,系统返回申请的地址,编译器写入标识符表:[a,地址,int],
标识符表:(1)变量名,(2)变量地址,(3)类型
变量的访问
这样访问a的时候,通过变量名就可以找到a的地址,通过int就知道取4个字节的长度指针的定义和访问:
指针是一个变量,只不过存储的内容是地址说明语句: 类型 * 变量名;
如果一个指针变量类型为int, 则通过指针变量访问对象时,读取从指针存储的地址开始连续读取4个字节,并按整型数据解释。
例子:
int a = 10; int b = 9; int * p1 = &a; int * p2 = &b; cout<<*p1<<endl; //p1读取出a的地址0x00000000,从0x00000000字节开始,读出4个字节的二进制串,根据关联类型int解释数据 //变量名 地址 内容 a 0x00000000 10 b 0x00000004 9 p1 0x00000008 0x00000000 p2 0x0000000C 0x00000004
&a = &b 是错误的,因为地址是固定的,是常量,不能改变
void 指针:
void指针能够存储任意对象的地址,因为没有关联类型,编译器无法解释所指对象,因此,在程序中必须对其作强制类型转换int a = 65; int * p; void * pa = &a; cout<<*(int *)pa<<endl;
指针的自增:
偏移量是指针的关联类型的长度相关文章推荐
- 从编译器角度理解C++中的引用和指针
- 深入理解 C++ 指针(一)---指针的概念
- 深入理解 C++ 指针(六)---指针和结构类型的关系
- 【C/C++】深入理解指针和数组的关系
- 深入理解C++中的智能指针auto_ptr
- 我的C++学习日记——关于const数值变量,指针和引用的理解
- 深入理解 C++ 指针(二)---指针的算术运算
- 深入理解C/C++数组和指针
- 关于C以及C++中指针的深入理解
- 【C/C++】一道试题,深入理解数组和指针
- 数组名和指针的深入理解(C++)
- 深入理解 C++ 指针(四)---指针表达式
- 深入理解 C++ 指针(八)---指针类型转换
- 有关sizeof 数组名的问题 数组名和指针的深入理解(C++)
- 深入理解C/C++指针
- 深入理解 C++ 指针(五)---数组和指针的关系
- 深入理解 C++ 指针(十)---指针与链表问题
- 深入理解C/C++数组和指针
- 深入理解C++的指针和引用
- 深入理解C/C++数组和指针