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

关于指针的一些理解

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

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

    基于C语言指针的一些思考

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

    39720

    澄清学习编程的10大误区

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

    802110

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

    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 的代码表述会引起编译错误),即你无法改变一个已经赋值的引用本身,类似的赋值操作所改变的仅是引用所引用(指向)的数据,并不改变引用本身,所以引用非常类似指针常量

    60010

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

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

    63110

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

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

    1.2K30

    指针+数组指针+字符指针+指针数组

    指针 指针作为C语言的核心部分,相比较其他的内容相对比较难懂一下,应用的方式多样,变化较多,导致很多的同学非常苦恼,那么接下来,我将陪你来共同揭开指针的神秘面纱; 指针的含义 大家不要把指针想的太难,指针其实就是通过地址找到对应的变量的位置...,然后我们可以对地址进行解引用来访问变量的内存,来获取值的一种间接方法;我们通常说指针指向哪里哪里,就是指针变量里面存的其他变量(或者常量)的地址;即  指针->地址->内存; 普通变量指针 首先,我们现来看看指针的构成以及表达形式...; 数组指针 数值指针,其主体是指针,他就是个指针,不过是有点不同而已,这个指针指向的是数组的地址,在此之前我们需要了解数组的地址; 数组的地址; 我们通常说数组的地址是数组名,是数组的首元素地址,也确实是这样...字符指针 含义 字符指针就是指针指向了字符或者字符串,因为字符串可以看成是一个字符数组,所以字符串指针与数组指针大致可以类比; 字符指针打印字符串 这里我使用了三种打印字符串的方式,从结果上看,很明显打出来的字符串都是相同的...指针数组 含义 指针数组,主体是数组,不同的是里面存的是指针,是地址; 指针数组打印二维数组 值得注意的是指针数组的[]前面的*p是没有括号的,我们可以这样看,他是一个数组,数组名是p,数组元素个数是3

    7510

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

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

    1.7K30

    10个需要澄清的边缘计算误区

    随着边缘计算对企业运营变得越来越重要,需要澄清一些常见的误解。 对于不同的技术领导者来说,边缘计算意味着不同的东西,从“云计算之外的事物”到“捕获、存储、处理、分析最接近生成位置的数据的实践”。...随着边缘计算功能对于组织来说越来越重要,IT领导者希望澄清人们对边缘计算概念的一些常见误解,其中包括其优点、缺点、起源,以及未来发展等等。...澄清人们对边缘计算的误解 尽管如此,边缘计算仍是那些引起一些混淆和误解的技术模型之一,需要对此进行澄清。...以下是一些最主要的误解: 误解1:边缘计算只有一个定义 SAS公司物联网副总裁Jason Mann表示,“边缘计算可能因计算、存储、流媒体数据的使用而有所不同。”...误解8:边缘计算只适合简单的分析 根据场景的不同,边缘计算有一些限制和约束。然而Mann说,“边缘计算是一个强大的分析环境,能够运行机器学习和人工智能(AI)。”

    77530

    澄清对AMP的十个误解

    为什么要限制一些东西的使用呢?这是因为一些看起来很无辜的小代码很容易拖慢网站的性能。而且一段时间后回来排查这些性能问题会是一件非常困难的事情。...当你使用这些自定义标签,并遵守一些其它的规则,那么 AMP 将通过一些手段保证你的网站速度是非常快的。这些手段主要包括强制静态布局、高效率资源加载和一些其它的优化。...AMP 只适用于移动端 诚然,AMP(Accelerated Mobile Pages)中的“Mobile”无助于澄清这个问题,但是这个说法还是跟事实完全不符。...我现有的网站上无法使用 AMP 我们已经澄清过第 4 点,并没有什么特别的理由让你现在的网站无法使用 AMP,因为当你读完第一个问题后,就知道了 AMP 只是一个 web 组件类库而已。...针对 10 个误解,我们给了 10 个澄清的答案,希望能给你一个对 AMP 更大更清晰的印象,也让你想清楚 AMP 对你来说是否适合。

    98330
    领券