指针的基础理解,以及引用的理解

本文深入浅出地介绍了指针的基本概念及其在C/C++等编程语言中的应用。讲解了指针的组成部分,如指针类型、所指向的类型、值及所占内存,并通过实例演示了如何使用指针按地址传递参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针这个概念是一个比较头疼的概念,如果学过数据结构还懂点编程语言的人应该好懂一点,下面是我多年学习以来对于指针的一些理解. 

1.首先你需要明白的是指针是一个变量(在没有声明const的特殊情况下),这就够了.如果你需要我解释什么是变量,那就请你别象下看了!

2.接下来要知道的是指针是一个特殊的变量,听其名就可以理解,不过要注意的是他所指向的是一个内存中的地址(所谓学习下数据结构就能理解)

3我也不知道指针是怎么弄出来的,但是在编程的时候我们需要用到他,所以我们必须理解因为在c.c++,甚至在c#中以及其他各种语言都会有怎么一个概念.象指针一样的东西.

4我们来搞清楚一个概念指针其实包括4部分的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。

       举几个列子吧!

             (1)int *ptr; //指针的类型是int *
            (2)char *ptr; //指针的类型是char *

             (1)int *ptr; //指针所指向的类型是int
            (2)char *ptr; //指针所指向的的类型是char

指针的值是指针本身存储的数值,这个值将被编译器当作一个地址 (平时在编程的时候很少看见所以容易搞混)

其实可以用&取地址符号来看他的直

指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了

运算符&和*

       这里&是取地址运算符,*是...书上叫做"间接运算符"。&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址嘛,那就是a的地址。*p的运算结果就五花八门了。总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。

举个列子

int num=5;把我附值给num变量

int &ref=num;&ref返回的是一个指针指向num的地址

int *p=&ref;把num的地址给了p指针   可以怎么简单的理解*P就是num的地址,p就是num的地址的地址

在举个简单的列子int *p=num 这里我们就可以理解为指针p指向了num的地址(即指针所指的地址),而*p就是num的值,

一个很实用的应用就是按地址传递参数

ovid swap(int *m,int *n)

{int temp

temp=*m;

*m=*n;

*n=temp)

如果我们用swap(&a,&b)调用就会让他们的直互变,分析一下:int *M=&a这个其实上面的已经讲了,理解了这个就能理解上面的按地址传递了*m其实就是一个地址,就是把2个指针所指向的地址互换了;而*m 既为地址里的值,m为指针指向的地址.这里就知道具体怎么应用就可以了,而不需要知道他在编译的时候是怎么处理的.

效果就等于 swap(a,b) temp=a;a=b;b=a    这个就是通过引用参数进行传递的

}

指针指向一个对象或者指向一个对象的引用都是指向对象的首地址

先写到这里吧!待续



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值