首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于指针一些理解

为什么叫指针指针其实是一种很形象的比喻,下面说说我的个人理解。...两个指针不赋 NULL,是坏习惯 初始化指针不赋 NULL,因为这样的指针会指向一片未知的区域,这样的指针不是空指针,但指向一片访问受限制的内存区域,你无法使用它,这样的情况下的指针,业界给了它一个形象的名字...珍爱生命,远离 "野指针" 与 "悬空指针" ! 多级指针,指向指针指针,有时人们也管它叫多维指针。既然指针变量是一个变量,指针变量能存变量的内存的地址。...这就是一个二级指针存一级指针的地址,三级指针存二级指针的地址,人们把这样的过程叫指向指针指针,但其实也就是一个上一级的指针存了下一级的指针的地址而已。...因此,像上面说的,你存了它的地址,你就是指向它,所以: 二级指针存一级指针的地址,那么可以说二级指针指向一级指针 三级指针存二级指针的地址,那么可以说二级指针指向一级指针 多级指针用处多多, 这里暂不举例详细说明

22410
您找到你想要的搜索结果了吗?
是的
没有找到

基于C语言指针一些思考

数组名和指针等价吗?...从刚才的例子中我们得知,数组名和指针看似是等价的,可实际上又是不等价的,在一维数组中,数组名和指针用起来的方式没有什么区别,如果将数组名赋值给一个指针变量的话都可以根据下标访问到数组中的元素并且打印出来...是一个2*2的二维数组: image-20201028005653611 至此,我们终于搞明白了第二章节的程序会出现段错误,二维数组开辟内存还是一块连续的内存,并不是我们所想象的拥有几行几列的内存,二级指针指的是指针指针...,当我们将数组名作为形参传入函数中后,函数执行p[i][j]时候发生了以下操作: image-20201028011911017 程序先获取到p的值,p的值是一个指向指针指针,根据图示可知,取出来的值为...在这里,我们终于可以下结论:「数组名和指针不等价」 总结 经过重重探索,我们终于搞明白了数组名和指针的相同点和不同点,也可以回答在第二章节中提出的几个问题: int *p和int p[]中的两个p究竟是什么

37920

指针、引用和常量的一些“故事”

C++也算是学了有些年头,可惜还是不甚了解,这不,今天对于指针、引用和常量这三个在C++中处处可见的东西又有些懵里懵懂了,也罢,今天就稍稍学究一下,再尽力整理一番其中的一些“故事”吧,一则帮助自己记忆...常量指针:常量“的”指针,指向常量的指针,所指内容是不能更改的(read-only),但指针本身是可以修改的    示例:const Object* objPtr、const int *iPtr   2...指针常量:指针“的”常量,即本身为常量的指针,所指向内容是可以修改的,但指针本身是不可以修改的   示例:Object* const objPtr、int * const iPtr   3. ...常量指针常量(好拗口~~~不知叫这名字是否确切):上述两者的结合,性质就是两者相加了   示例:const Object* const objPtr   4. ...引用本身即带有常量语义(类似int& const 的代码表述会引起编译错误),即你无法改变一个已经赋值的引用本身,类似的赋值操作所改变的仅是引用所引用(指向)的数据,并不改变引用本身,所以引用非常类似指针常量

56310

C 二维数组和指针、函数指针、typedef等的一些笔记

文章目录 二维函数和指针 二维数组 二维数组名不能传递给二级指针 数组名的含义 指针作为函数入参 一维指针 改变一维指针指向的值 改变一维指针指向的地址 二维指针 函数指针 函数指针数组 typedef...]:一个数组,数组内每个元素都是指针 二维数组名不能传递给二级指针 二维数组跟二级指针,没有直接关系。...指针作为函数入参 当需要在函数内部改变传入的变量的值,就需要传这个变量的地址,对指针变量也一样。 一维指针 改变一维指针指向的值 当一维指针作为函数入参,且需要改变它的值,需要外部定义好、分配好内存。...如果要改变指针指向的地址,这时候就要取指针的地址作为函数入参了。...二维指针 函数指针 本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。 函数指针有两个用途:调用函数和做函数的参数。

52810

澄清学习编程的10大误区

你可以先选择一些初学者的课程。例如在Codecademy上,就提供了这类课程。你也可以浏览一些教程类的网站,例如Nettuts+,它为用户提供了文本和视频两种格式的课程讲解。...在大学里学习编程还有一些关键的因素你是需要考虑的。 但无论你选择的是哪一个渠道,掌握好你自己的自学能力才是最重要的。因为编程不同于其它行业,它总是在快速地进化着。...如果孩子们喜欢一个互动的环境,可以选择一些社区学院,例如Khan Academy就很不错。父母也可以参与到孩子的学习中,引导他们,给他们提供建议和资源,加上父母的支持,可以推动孩子的学习积极性。...你还可以尝试接一些兼职的活来干。如果你是刚毕业的学生,你还可以应聘一些实习生的职位,这是一个获得一份全职工作的好机会。最重要的是,你要有一份能够打动人的工作履历,它可以展示你的能力。...良好的声誉会对你很有帮助,所以你应该做一些开源项目。 你也可以经常活跃在编程社区或社交网站,拓展你的人脉。

756110

C语言指针一些常见的错误用法

指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽。...比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,语言的自身机制帮用户处理指针的分配释放,为的就是方便用户使用,减少错误。...不过我们不能因噎废食,指针虽难,但学好了会大大提升你的编程能力。 下面来列举一下在学习过程中指针的常见错误。 1.指针指针变量 很多初学者没搞明白这两者的区别,以至于很多时候把两者等同了。...在C语言中指针是一个概念性的东西,简单而言就是地址。而指针变量是变量类型,属于int,float这类的,是用来存放指针的,也就是地址。但是很多时候我们说指针时是代指指针变量的,这点我们要知道。...2.指针变量的地址和指针变量存放的地址 凡是变量都要有内存来存放,指针变量也不例外,它也有一个地址,但是指针变量本身又是存放地址的,所以很多人会在这个地方搞不清楚,分不清什么时候是指针变量的地址,什么时候是指针变量存放的地址

1.1K30

CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别...空指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针...指针变量的+-运算 指针变量的加减运算:也就是做地址偏移,不同 的指针类型偏移的步长不同。...图片 图片 PS: 区分指针数组int *a[3]和数组指针int (*a)[3],前者时存放指针的数组,后者是指向数组的指针

1.7K30

CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别...空指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针...PS: 区分指针数组int *a[3]和数组指针int (*a)[3],前者时存放指针的数组,后者是指向数组的指针。...这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

1.6K20
领券