c语言指针用法的讲解(C语言中的指针是初学者的噩梦)

上两篇文章给大家介绍了一下内存的概念和内存管理,打下了这些基础之后今天给大家来讲讲指针的基本知识。

指针是C语言的精髓同时也是学习者的“噩梦”,在实际嵌入式开发当中每一天都会和指针打交道。其实指针也只是一个变量而已,只不过这个变量用来存储的是一个地址。

C语言指针的基本知识

指针的定义:

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(1)

指针的赋值:

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(2)

指针的引用:

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(3)

指针的尺寸:

  • 指针的尺寸与指针的类型没有任何关系
  • 指针用来存放的是一个内存的地址, 因此他的大小就应该是该计算机中内存地址的大小,32位系统中为4个字节、64位系统中为8个字节。

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(4)

野指针:

顾名思义,野指针就是比较“野”的一种指针。是指向一个不确定的内存的指针,这种指针对我们系统而言是非常危险的。

危害:

      • 情节不严重的情况下你有可能可以正常使用,但是一般情况下会出现 段错误,导致程序崩溃
      • 情节严重的,有可能导致系统崩溃

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(5)

产生原因:

      • 定义的时候没有给他初始化
      • 他所指向的内存被释放了,系统已经回收了这个内存
      • 指针越界

如何解决:

      • 定义的时候记得给他初始化(让它指向一块确定的内存)
      • 被释放\ free() 之后的指针应该不再使用(释放之后一般让它指向NULL)
      • 确定好内存的大小不要越界
空指针:

空指针是一个保存了零地址的一个指针,也就零地址指针。

在某一些情况下我们定义了一个指针但是暂时不知道该指向哪里,想等待后面的程序运行时候再分配地址,又不想让野指针出现危害系统的安全,可以让该指针先指向一个相对安全的位置。一般会让它指向0x000000000 这个地址。

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(6)

指针运算:

指针的运算就是在当前指针的地址上增加或减小N个字节,只能加减,乘除没有意义。

指针的加法: p 1 则表示在p目前指向地址值上增加1个单位(指针的类型)

指针的减法: p-1 则表示在p目前指向地址值上下减1个单位(指针的类型)

c语言指针用法的讲解(C语言中的指针是初学者的噩梦)(7)

好了,今天给大家梳理了一遍指针的基本知识,下一篇会带着大家剖析指针与数组之间的爱恨情仇。

我是森哥,后面会继续给大家分享嵌入式和C语言知识,喜欢的朋友和嵌入式学习者可以关注我一起进步!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页