一.指针
1.指针的基本概念
我们都知道,定义了一个简单变量,声明语句指出了该值的类型,并且让程序为该值分配了内存,访问这个内存地址可对该变量应用地址运算符(&),就可以获得他的位置。
请看下面的示例:
#include<iostream>
using namespace std;
int main(){
int p ;
double q;
cout << "p变量的地址为:" ;
cout << &p <<endl;
cout << "q变量的地址为:";
cout << &q ;
return 0;
}
编译结果:
p变量的地址为:0x70fe1c
q变量的地址为:0x70fe10
通过上面的实例,我们了解什么是内存地址以及如何访问它。接下来,我们看看什么是指针。
什么是指针?
指针是一个变量,其存储的是值的地址,而不是值本身。因此指针名表示的是地址。( * )运算符被称为间接值或解除引用运算符,将其运用与指针,可以得到该地址处存储的值。例如,假设 p是一个指针,则 p 表示的是一个地址,*p表示存储在改地址处的值。*p 与普通变量具有相同的效果。
2.指针的声明和初始化
(1)指针的声明
就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明。指针变量声明的一般形式为:
type *p_dates;
例如:
int *p;
这表明,*p的类型为int。由于( * )运算符被用于指针,因此 p 变量本身必须是指针。我们说 p 指向 int 类型,我们还说 p 的类型是指向 int 的指针。可以这样说 p 是指针(地址),而 *p是 int, 而不是指针。
(2)指针的初始化
可以在声明语句中初始化指针。在这种情况下,被初始化的是指针,而不它指向的值。也就是说,下面的语句将pt(而不是 *p)的值设置为&mun:
int num = 3 ;
int *p = &num ;
下面的程序示例演示了将指针初始化为一个地址:
#include<iostream>
using namespace std;
int main(){
int num = 3 ;
int *p = &num ;
cout << "num = " << num;
cout << "; 变量num的地址为:" << &num << endl;
cout << "*p = " << *p ;
cout << "; p = " << p;
return 0;
}
输出结果:
num = 3; 变量num的地址为:0x70fe04
*p = 3; p = 0x70fe04
从中可知,程序将p(而不是*p ) 初始化为num的地址。
3.new运算符分配内存
我们知道在C语言中,可以用库函数malloc()来分配内存;在C++中是采用new运算符来分配内存。
下面我们来看一个示例:
int *p = new int ;
new int 告诉程序,需要适合存储 int 的内存。new 运算符根据类型来确定需要多少字节的内存。然后,它找到这样的内存,并返回其地址。接下来,将地址赋给p,p是被声明为指向int的指针。
如果觉得读完之后,觉得有所收获,还请家人们支持一下小编哦哦~。如有问题,欢迎评论区留言。