首页 > 其他分享 >指针(下)

指针(下)

时间:2022-12-05 21:31:34浏览次数:33  
标签:函数 地址 test 指针 我们 赋值

大家晚上好呀,今天要给大家分享的依然是我们的指针的基础知识,指针这个模块我感觉太难了,所以我可能要分得很细,所以指针这个模块可能还得搞什么4.0,5.0 ,,,

好的,下面进行今天的指针基础知识分享。

前面我们有讲过导致野指针的原因,和野指针的危害是很大的,一旦修改了一些系统的重要值就会令系统崩溃,所以大家在用代码是一定要规避野指针,规避野指针的方法有,1,当你实在不知道要赋什么值(地址)给指针时,你可以赋值NULL,(指针的0),2,检查是否有越界使用指针,比如你定义的是一个长度为10的数组,你让一个指针去访问一个11的地址这样就会导致越界,有造成系统崩溃的风险,所以我们在使用指针时一定要注意范围。

然后还有一种很隐晦的野指针方式

如图

指针(下)_野指针

你定义了一个test 的函数,因为要返回的是一个地址,所以我们把test定义为一个指针型的函数,然后在主函数那里用一个指针*p接受这个返回地址,如果这时候我们想对这个地址里的数重新赋值一个数,会怎么样呢?会有的问题,因为我们说调用的函数test 里的a赋值为10,它的作用域是只在那个test 函数,一旦你返回了这个a地址,就结束了,这一块空间就会还给系统,然后系统把这个空间给了别人,但是你又把地址给了主函数,甚至想要赋值来改变它,在不同的编译器就会有错误。

再看我们指针的运算,我们可以这样

指针(下)_野指针_02

什么意思呢,就是说,可以通过指针+-一个整数从而实现对不同地址的访问。

比如这一段循环

指针(下)_野指针_03

因为这个数组有10个元素,然后如果我们要通过指针进行访问数组元素(不用数组下标)就可以通过这样p=p+1,实现,但是要注意这个时候我们访问的是里面的值要用%d,不用%p(这个是打印地址)

好啦,今天的分享就到此结束,我们明天见。








标签:函数,地址,test,指针,我们,赋值
From: https://blog.51cto.com/u_15863860/5913295

相关文章

  • 【C语言】指针Ⅱ --- 变量与指针、定义指针变量、有效声明指针、使用指针。
    ......
  • 如何给空指针设置值
    要获取指针的指针进行设置值 varnintvarpnTarget*int //这里传递的是指针的指针**intppnv:=reflect.ValueOf(&pnTarget)pnV:=ppnv.Elem() //创建原......
  • 一文读懂野指针
    一、引子        我们都知道对指针(Pointer)的操作,实际上是对计算机内存地址的操作,通过访问内存地址实现间接访问该地址中保存的数据。其实就是CPU的寻址方式中的......
  • 指针基础知识(中)
    上一次我们讲的那个指针基础知识上的时候说过指针两边的类型要一致,否则会出错,但是我经过查阅别的资料,发现是可以的,并且不管你是用什么类型的指针来接收定义的值的地址,都是同......
  • 【C语言】指针Ⅰ--- 概念、前言、内存、地址与指针。
    ......
  • 4.指针和引用的区别详解
    前言指针和引用在形式上很好区别,在C++中相比于指针我们更喜欢使用引用,但是它们的使用场景又极其类似,它们都能直接引用对象,对对象进行处理,那么究竟为什么会引入引用?什么时......
  • 9.【C语言详解】指针
    指针是什么指针是什么?指针理解的2个要点:指针是内存中一个最小单元的编号,也就是地址;平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量;指针就是地址,......
  • 14.【C语言进阶】指针
    简介指针的概念指针是个变量,用来存储地址。指针的大小只与是64位平台还是32位平台有关,与指针类型无关。指针类型决定了指针的解引用权限和读取方式。指针+-正数与指......
  • 玩转双指针
    一、算法简介双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称......
  • C 字符串指针与字符串数组
    在程序中定义的字符串无论是对于字符串指针还是字符串数组,都会将字符串放到静态存储区在程序开始运行的时候,对于数组来说,先分配内存空间,然后静态存储区中的字符串字面量......