c++ 指针(一)

简介: 指针:是说指针名表示的是地址。是一个变量,存储的是值的地址,而不是值本身  *运算符被称为间接值或解除引用运算符也可以叫做取地址符  声明一个指针  int * p_data;  * p_data的类型为int 由于*运算符被用于指针,因此p_data变量本身必须是指针。

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

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

 声明一个指针

 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;

 使用指针符号可以处理数组中的数据,相应的执行速度往往比使用数组符号要快

目录
相关文章
|
3月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
51 1
|
2月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
23 3
|
2月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
21 6
|
2月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
3月前
|
数据采集 存储 编译器
this指针如何使C++成员指针可调用
本文介绍了C++中的this指针,它是一个隐藏的指针,用于在成员函数中访问对象实例的成员。文章通过代码示例阐述了this指针的工作原理,以及如何使用指向成员变量和成员函数的指针。此外,还提供了一个多线程爬虫示例,展示this指针如何使成员指针在对象实例上调用,同时利用代理IP和多线程提升爬取效率。
this指针如何使C++成员指针可调用
|
3月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
53 5
|
3月前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
3月前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
|
3月前
|
存储 算法 安全
C++一分钟之-数组与指针基础
【6月更文挑战第19天】在C++中,数组和指针是核心概念,数组是连续内存存储相同类型的数据,而指针是存储内存地址的变量。数组名等同于指向其首元素的常量指针。常见问题包括数组越界、尝试改变固定大小数组、不正确的指针算术以及忘记释放动态内存。使用动态分配和智能指针可避免这些问题。示例代码展示了安全访问和管理内存的方法,强调了实践的重要性。
40 3
|
3月前
|
存储 编译器 C++
C++中的指针
C++中的指针
23 1