C++中的指针和指针的引用
2015-08-26 20:15
351 查看
C++中的指针
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。1、指针的值
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为
32位程序里内存地址全都是32位长。
指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当
于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。
2、指针所指向的类型
int p[3];//p先和[]结合,说明p是一个数组,再和int结合,所以p是一个int型数组
int* p[3];//优先级[]比*高,p是数组,再加上int*,可以称它为指针数组,数组的每一个元素的值都为指针(地址)
int (*p)[3];//*p可以看作是普通变量,就回到第三种情况(int
p[3]),但是这里p是指针变量,它指向的是一个包含3个整型数值的数组。可以称它为数组指针,数组中每一个元素的值为普通整型值。
int** p;//int*代表指针类型,*是指针类型,所以p是指向int型指针的指针,p指向的类型是int*类型(int型指针)
int p(int);//这很明显是一个返回类型为int,并且带一个int型参数的函数
int (*p)(int);//p是函数指针,指向的是返回值为int并且带一个int参数的函数。这个声明包含两部分:函数变量+函数地址变量(姑且把函数也看做是变量)
int* (*p(int))[3];//这个有点复杂,它仍然是一个函数指针。从*p(int)看,它是函数指针,带一个int参数;然后看[],说明函数返回值为数组,然后返回类型为int*。所以p是一个指向返回值为int*型指针数组,并且带一个int型参数的函数的指针
相关文章推荐
- 重读C语言---基本知识 与概念 笔记
- C++动态申请内存 new T()与new T[]的区别
- C++动态申请内存 new T()与new T[]的区别
- 浅谈cin>>与cin.getline读取缓冲区中的‘\n’和空格的区别
- C语言copy文件
- C语言中的运算符
- c++ 可重载运算符和不可重载运算符
- OutMan——C语言中文件的操作
- c++中不能重载的运算符
- c/c++ 取得当前目录
- C语言基础知识之(八):二维数组,二维字符串数组,代码安全
- C++中的error C2662,const的this指针问题
- 关于const的底层实现
- 寻找距离某数最近的素数(C语言)
- C++的一道笔试题
- Thinking in C++之1.继承与组合概念、区别及优缺点
- c++ 时间类型详解 time_t
- 到C++11中的智能指针
- C++11新特性之Lambda函数
- Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解