c语言中使用指针通过什么来实现的(指针-C语言的灵魂)

c语言中使用指针通过什么来实现的(指针-C语言的灵魂)(1)

前面我们提到指针变量中保存的就是内存地址,所以就会产生一种疑问,归根结底,指针就是地址,所以,指针类型和 int类型应该是一回事吧?看下面的代码:

c语言中使用指针通过什么来实现的(指针-C语言的灵魂)(2)

在32位系统下,程序也可以运行,因为32位系统中,C语言的int 型长度位4字节,指针类型的长度也是4字节,这样操作是没有问题的,但是在64位系统中,指针类型的长度是8个字节,int型的长度是4字节,所以就不能保证正确运行。还有一个问题:既然指针就是地址,那么,指向int的指针也好,指向 double的指针也好,它们有什么不一样吗?有必要去区分它们吗?对于大部分的运行环境来说,当程序运行时,不管是指向 int 的指针,还是指向 double的指针,都保持相同的表现形式。不仅如此,ANSI C 还为我们准备了“可以指向任何类型的指针类型”—— void*类型.下面这个程序是不会报错的

c语言中使用指针通过什么来实现的(指针-C语言的灵魂)(3)

因为 hoge_p 这个指针可以指向任何类型,但是如果像这样修改就会出问题。无法编译。

c语言中使用指针通过什么来实现的(指针-C语言的灵魂)(4)

,

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

    分享
    投诉
    首页