不同类型的指针变量是可以直接相互赋值的_C/C++ | 小小指针定乾坤

一、前言

本文介绍C/C++中的指针,分为两个部分:“引子:指针”与“代码演示”,分别介绍指针概要和指针代码实现。

二、引子:指针

含义:指针是一个变量,其值为另一个变量的地址,是哪个变量的地址呢?是指针所指向变量的地址。

使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针(写入地址值)、访问指针变量中可用地址的值(读出地址值)。

三、代码演示

3.1 定义一个指针变量

定义指针变量时,要注意一点,比如int *ip,

8f26ccf6430cf16d11af799cc593a19f.png

有图,我将"int *" “double *” “float *” “char *” 用方框号框起来,旨在说明它们是一个整体,一起组成类型名,这是一个指针类型名。

e4f37c2fd3276899cc024b2b82cc8d4b.png

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++入门级知识,希望对读者有用。

天天打码,天天进步!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值