一、前言
本文介绍C/C++中的指针,分为两个部分:“引子:指针”与“代码演示”,分别介绍指针概要和指针代码实现。
二、引子:指针
含义:指针是一个变量,其值为另一个变量的地址,是哪个变量的地址呢?是指针所指向变量的地址。
使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针(写入地址值)、访问指针变量中可用地址的值(读出地址值)。
三、代码演示
3.1 定义一个指针变量
定义指针变量时,要注意一点,比如int *ip,
![8f26ccf6430cf16d11af799cc593a19f.png](https://i-blog.csdnimg.cn/blog_migrate/2c3cc8c4076bd69c0d49de5c99f242b4.jpeg)
有图,我将"int *" “double *” “float *” “char *” 用方框号框起来,旨在说明它们是一个整体,一起组成类型名,这是一个指针类型名。
![e4f37c2fd3276899cc024b2b82cc8d4b.png](https://i-blog.csdnimg.cn/blog_migrate/7b3c18720253545db47e72ae41915b71.jpeg)
3.2 把变量地址赋值给指针(写入地址值)
定义指针变量后,就要给指针变量赋值了,未赋值的指针变量是随机值,这是非常危险的。
如何给指针变量赋值?
首先要明白指针变量的值是什么?指针变量的值实际是地址,记住,
重点,很重要:所有指针变量的值都是地址。所有的指针变量都是为实际变量保存地址的,不同类型的指针变量只是保存不同实际类型变量的指针而已。int * 保存int类型变量地址,double *保存double类型变量地址,float * 保存float类型变量地址,char *保存char类型变量地址,虽然保存着不同类型变量地址,但都是保存地址,都是保存十六进制的内存地址。
好了开始看代码:
#include <iostream>
using namespace std;
int main()
{
int *ip; // 指针变量的声明 接着使用刚才的int *ip,int*类型变量ip.
int var = 20; // 实际变量的声明 因为是int *类型指针变量,所以自然用int类型的实际变量
ip = &var; // 在指针变量中存储 var 的地址
//这里,注意,同上ip是指针类型变量名,又因为指针类型变量是用来存放十六进制的地址的,
//所以这里将实际变量var的地址赋值给指针变量ip,
//注意:实际变量中使用&取到地址 这里&var
return 0;
}
3.3 访问指针变量中可用地址的值(读出地址值)
既然指针变量中存放的是地址,可以直接访问指针变量名输出地址吗?答案是肯定的。
代码1——直接访问指针变量名输出地址:
#include <iostream>
using namespace std;
int main()
{
int *ip; // 指针变量的声明 接着使用刚才的int *ip,int*类型变量ip.
int var = 20; // 实际变量的声明 因为是int *类型指针变量,所以自然用int类型的实际变量
ip = &var; // 在指针变量中存储 var 的地址
//这里,注意,同上ip是指针类型变量名,又因为指针类型变量是用来存放十六进制的地址的,
//所以这里将实际变量var的地址赋值给指针变量ip,
//注意:实际变量中使用&取到地址 这里&var
cout << "输出实际变量值: ";
cout << var << endl; //输出实际变量值
cout << "输出实际变量地址: ";
cout << ip << endl; //输出实际变量地址
return 0;
}
输出1:
输出实际变量值: 20
输出实际变量地址: 0x6afee8
所有指针变量中存放的都是地址,但是指针变量在读出的时候不仅可以读出地址,还可以通过地址找到地址所在内容并输出,且看下面代码。
代码2——"*指针变量名"得到指针所指地址的内容:
#include <iostream>
using namespace std;
int main()
{
int *ip; // 指针变量的声明 接着使用刚才的int *ip,int*类型变量ip.
int var = 20; // 实际变量的声明 因为是int *类型指针变量,所以自然用int类型的实际变量
ip = &var; // 在指针变量中存储 var 的地址
//这里,注意,同上ip是指针类型变量名,又因为指针类型变量是用来存放十六进制的地址的,
//所以这里将实际变量var的地址赋值给指针变量ip,
//注意:实际变量中使用&取到地址 这里&var
cout << "输出实际变量值: ";
cout << var << endl; //输出实际变量值
cout << "输出实际变量地址: ";
cout << ip << endl; //输出实际变量地址
cout << "输出实际变量值: ";
cout << *ip << endl; //输出实际变量值 使用指针变量通过地址找到实际变量值
//这里注意 指针变量ip中存放的是实际变量var的十六进制的地址,指针变量可以用"*变量名"获取指针变量所指内存地址的内容
return 0;
}
输出2:
输出实际变量值: 20
输出实际变量地址: 0x6afee8
输出实际变量值: 20
四、尾声
本节为初识指针,介绍了定义一个指针变量、把变量地址赋值给指针(写入地址值)、访问指针变量中可用地址的值(读出地址值),三个最基本的操作,属于C/C++入门级知识,希望对读者有用。
天天打码,天天进步!