当前位置: 首页 >分类> 一文看懂:多级指针和指针数组的区别

一文看懂:多级指针和指针数组的区别

【转载】作者:河北华曙新能源汽车科技有限公司 2023-5-23
评论(0
分享

为了大家不再迷惑,我总结了简单几句话,轻松搞懂:指针、二级指针、函数指针、指针函数、数组指针、指针数组的区别。1、指针,是一种数据类型,在正常情况下,指针是保存着某个变量/函数/数据等的内存地址,2、二级指针,保存A的内存地址,而A的内存地址保存的值又是指向B的内存地址,3、多级指针:以此类推,理解了多级指针,也就理解了外挂行业的基址偏移的原理。

5、指针函数,本质是函数,这个函数的返回值是指针类型。6、数组指针,本质是指针,指向这个数组的内存地址,即,数组第一个元素的内存地址。TIP:通过底层看一维数组、二维数组、多维数组,其实没有区别。7、指针数组,本质是数组,即,数组的每个元素为指针类型。8、重点:拿到指针就拿到了一切,只要程序没有重新编译,其基址是固定的,所以你懂的!

1、指针数组的创建和用法

students[]表示s是个指针,指向一个student数组的首地址,当你使用search函数的时候,在这个函数里创建了一个自动变量s,它的值是传递给该函数的student数组a的首地址,意思就是说s现在和a一样都指向同一个student数组的首地址,但是请注意:s和a是两个不同的指针,他们仅仅是指向了同一个数组,这就像a5,

所以当search函数结束的时候指针s所占用的4个字节的空间被释放掉了,s这个变量也就消失了,但是s指向的数组毕竟是主函数中创建的数组,它不会因为search结束而消失,只会在主函数结束时才会消失,所以你的程序不会有问题。你可以试试在search中定义一个student数组,并且最后返回他的一个元素的地址,并在主函数中使用该地址,到时候你就会发现程序会运行错误了。

2、数组指针和指针数组怎样理解?作为函数参数时,怎样调用?

数组指针的实例:int(*p)[5];可以这样解释其定义:p是个指针,指向一个数组,数组有5个元素,每个元素是一个int型整数。在内存中,p就是一个占4字节的变量,变量的值是个地址,在内存的那个地址处,有4*5=20个连续字节被认为是一个int[5]数组。做一次p ,p的值增加20。这种特性和二维数组是有相似之处的,比如intk[3][5],事实上,可以这样赋值:pk。

3、c 指针数组怎么用,还有指针数组和数组指针

名字可能拗口一点。增加一个”的“就好理解了:”指针的数组“和”数组的指针“,”指针的数组“和”整型的数组“类似,就是指一个数组,其中每一个元素是指针类型。从数组中取出一个元素(指针)后,再根据这个元素(指针)的指向地址,对实际的内存空间进行操作,”数组的指针“,就是指一个数组的首元素的地址,数组中保存的元素不知道是什么类型(整型、浮点型、指针型都有可能)。

分享:

加入收藏

标签:
+0

+1

网友评论 0条评论
精品推荐

Copyright © 2007 - 河北华曙新能源汽车科技有限公司.All rights reserved