C++【指针】

本文介绍了C++中的指针概念,包括指针的定义、不同类型指针的应用、间接访问的原理以及指针与一维数组的关系。强调了指针在C++编程中的重要性。
摘要由CSDN通过智能技术生成

一、指针定义

       指针是一个变量,通过这个变量,间接访问另一个变量,指针是C++中最重要的概念,如果搞不懂指针,C++就不算入门。指针的值为另一个变量的地址,在使用指针之前,需要对指针变量进行声明:

    type *p;

type表示指针变量所指的变量的数据类型,‘*’表示p变量是一个指针变量,p表示指针变量,其值为所指变量的地址。

在定义指针时,需要用‘&’取得变量的地址:int *p=&a;

#include <iostream>
using namespace std;
int main ()
{
   int  a=10;  //定义变量a
   int *p=&a;  //定义指针p,指向a的地址

   cout <<p<<endl;  //输出a的内存地址
   cout <<*p<<endl;  //输出a的值

   return 0;
}

以上代码是将指针p指向变量a,并输出指针p的值和p指向的变量的值

二、指针的类型

指针的本质是整数,它指的是另一个数据的内存地址编号,指针的类型表明的就是它所指向的对象的期望类型,其取决于指向的对象:

//定义一个整型变量a,指针p1指向a
int a;
int *p1=&a;

//定义一个浮点型变量b,指针p2指向b
double b;
double *p2=&b;

三、指针的间接访问

        其实质是交换指针,不交换实际数据。其应用场景为:对于实际问题中的待排序元素,可能是较为庞大的数据,交换数据本身付出的代价很大,所以我们可以交换指向该数据的指针值,用较小的代价实现想要的功能。

交换两个整型变量代码实现(实际上是交换的两个数据的内存地址):

int a=10;
int b=20;

int *p1=&a;
int *p2=&b;

cout<<"交换前:"<<*p1<<' '<<*p2<<endl;

//交换两个指针
swap(p1,p2);
cout<<"交换后:"<<*p1<<' '<<*p2<<endl;

输出结果为:

交换前:10 20
交换后:20 10

四、指针与一维数组

       c++中规定数组名既代表数组本身,又代表整个数组的地址,还是数组首元素的地址值,即:与a第0个元素的地址& a[0]相同,下面两个语句是等价的:

p = a;
p = &a[0];

我们可以通过指针访问一维数组,循环中i表示输出的整数的个数:

int a[5]={1,2,3,4,5};
	int *p=a;
	//上行代码也可以写成 int *p=a[0] 
	for(int i=0;i<5;i++){
		cout<<*p<<' ';
		p++;
	} 

输出结果为:

1 2 3 4 5

 结语:指针的用法多种多样,本文列举了一些基础的用法和使用场景,指针在C++学习中是基础且重要的一环,希望大家能够举一反三,日清日高。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值