c++ 指针(一)

简介:

指针:是说指针名表示的是地址。是一个变量,存储的是值的地址,而不是值本身

 *运算符被称为间接值或解除引用运算符也可以叫做取地址符

 声明一个指针

 int * p_data;

 * p_data的类型为int 由于*运算符被用于指针,因此p_data变量本身必须是指针。

 我们说p_data指向int类型,我们还说P_data的类型是指向int的指针,或int*

可以这样说p_data是指针(地 址),而*p_data是int,而不是指针

初始化指针

int value=1;

int * pt=&value;

&的作用就是取变量的地址

初始化指针就是把pt的值设置为&value,

输出

cout<<"value"<<value<<endl;

cout<<"*pt"<<*pt<<endl;

cout<<"&value"<<&value<<endl;

cout<<"pt"<<pt<<endl;

你就会发现pt和&value是一样的

*pt和value 是一样的

 

一般如果只是声明一个指针,可以把指针初始化等于0的指针指针为nullptr不指向任何对象

int* myValue(nullptr);

nullptr可以隐式转换为bool类型

可以这么判断

if(!myValue)

  ........

 

 

-----------------------------------------------------------------------------------

用new 来分配内存,程序员要告诉new 需要为哪种数据类型分配内存,new 将找到一个长度正确

的内存块,并返回该内存的地址。

int *pt =new int;

new int 告诉程序,需要适合存储Int的内存。new运算符根据类型来确定需要多少字节的内存。

然后找到这样的内存并返回地址,再把地址赋值给pt,pt被声明为指向int的指针

现在pt是地址,*pt是指向该内存的值

使用完内存后我们就要把内存归还给内存池,这就用到了delete

使用delete时要加上指向内存块的指针

int * pt=new int;

delete pt;

一定要配对的使用new 和delete,也不能释放已经释放完的内存块

也不能向下面这样释放声明变量所得的内存

int value=1;

int * pt=&value;

delete pt;//这样做是不对的

下面说一下指针创建数组

int * pt =new int[10];

new 运算符返回的是第一个元素的地址,用完后我们要用delete释放它们

delete [] pt;//[] 告诉程序应释放整个数组,而不是仅仅是指针指向的元素

使用new 和delete时,应遵守以下规则

1.不要用delete 来释放不是new分配的内存

2.不用使用delete来释放同一个内存块两次

3.如果使用new[] 为数组分配内存,则应使用delete[]释放

4.如果用new为一个实体分配内存,则应使用delete(没有[])来释放

5.对于空指针应用delete是安全的

创建数组后我们就可以用指针访问这些数组了

int * pt =new int[3]

pt[0] =1;

pt[1] =2;

pt[2] =3;

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3465745.html,如需转载请自行联系原作者

相关文章
|
3天前
|
C++ 数据格式
LabVIEW传递接收C/C++DLL指针
LabVIEW传递接收C/C++DLL指针
10 1
|
2天前
|
C++ 编译器
|
4天前
|
存储 安全 程序员
C++:智能指针
C++:智能指针
19 5
|
5天前
|
存储 安全 C++
深入理解C++中的指针与引用
深入理解C++中的指针与引用
7 0
|
6天前
|
算法 C++
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
10 0
|
6天前
|
安全 算法 数据安全/隐私保护
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
10 0
|
6天前
|
存储 算法 安全
【C++入门到精通】智能指针 auto_ptr、unique_ptr简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 auto_ptr、unique_ptr简介及C++模拟实现 [ C++入门 ]
11 0
|
6天前
|
安全 算法 IDE
【C++入门到精通】智能指针 [ C++入门 ]
【C++入门到精通】智能指针 [ C++入门 ]
9 0
|
7天前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
6 1
|
12天前
|
C++
【C++】一文深入浅出带你参透库中的几种 [ 智能指针 ]及其背后实现原理(代码&图示)
【C++】一文深入浅出带你参透库中的几种 [ 智能指针 ]及其背后实现原理(代码&图示)