这是因为目前的编译器还不能自动帮我们识别是什么类型,不同的类型存储空间是不一样的,所以我们需要手动来写明类型。指针如果没有类型,那么指针的“++”、或者“p=p+2”这样的操作,既不知道要偏移多少了。
C语言里面有一个使用广泛指针(void指针)你完全可以指向任意的空间,用的时候按照你喜欢的方式来用。为什么要把它转换为我们需要的类型呢?因为:目前的编译器还不能自动帮我们识别是什么类型,不同的类型存储空间是不一样的,所以我们需要手动来写明类型。
指针如果没有类型,那么指针的“++”、或者“p=p+2”这样的操作,既不知道要偏移多少了。
以p=p+2为例,编译器会根据p的类型将这个语句翻译成 p = p + 2 * (指针类型占用的内存大小),如果没有类型,这个语句就没有办法实现。但是到运行期,这个东西就看不见了。
指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的(如在X86环境下,指针变量的大小都是4个字节),而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。
延伸阅读:
什么是C语言?
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
文章标题:C语言中的指针为什么要区别出指向不同数据类型的指针,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38836