指针问题

xiaoxiao2021-02-28  12

刚刚开始学习指针总觉得特别抽象、难理,跟我们平常生活中思考问题用的思维不一样,但在学习一段时间以后,渐渐的理解掌握他之后,发现它真的很好用并且功能强大。今天我就来说说我对指针的理解(或者说是将老师上课讲的内容做一个总结)。

指针其实就等同于地址,今天我从下面两部分详细说指针:

一、定义指针

定义指针是指定义指针变量,通常用int *p=&a,&a的意思为取a的地址,*p表示定义指针变量p,这里的*是定义指针变量的意思,整个表达式意思为定义整型指针变量p来保存a的地址,其实定义指针变量跟我们定义普通变量是一样的,只是指针变量用来保存一个地址而已。

二、指针的解引用

在定义指针变量之后,我们就可以使用了,通过上面的介绍,大概知道了指针是保存地址的,但是就像我们保存某个人的手机号码一样,单纯保存某个变量的地址其实作用不大,重要的是我们需要找到那个人,也就是需要找到那个变量的值,这时我们又需要重新定义一个符号或名词来表示怎样通过一个变量的地址来访问变量的值,c语言是这样定义的,将*定义为解指针,写法为*p=100,千万要注意这里的*跟定义指针时的*区别开,两个虽然使用的是同一个符号,但意义是完全不一样的,这里的*表示的就是取保存的地址对应的值,两个的区分其实也是比较容易的,一个是定义,一个是使用,所以定义是会有定义的类型,例如:int*p=&a,而解引用时就直接赋值即可,例如*p=100。

在这块有几个题目可以有助于我们理解

Int*p=&a //定义指针变量并将指针变量p保存a的地址

*P=1000;//解引用 取a的值等于1000,所以会得出a=1000

P=&b;

P=2000;

一级指针可以保存一个变量的地址,那会不会有一个指针也可以保存指针的地址呢?指针也是一个变量,当然也会有地址,有地址当然可以保存啊,不过我们肯定要把保存指针地址与保存变量地址的指针区分开,c语言规定保存指针地址的指针为二级指针,用**pp来表示,它的功能也更加强大,例如

int**pp=&p;//定义二级指针变量pp来保存p的地址

  *pp=&a;//对pp进行第一次解引用可得出p的值,即*pp=p,所以p=&a,表示p来保存a的地址。

  **pp=100;//**pp意思是为二即指针变量进行两次解引用,一级解引用结果为=&a,再进行解引用,可得出**pp的结果为a的值,即得出a=100;

转载请注明原文地址: https://www.6miu.com/read-1400048.html

最新回复(0)