对于C内置的数据类型:int、char、float...
不同类型所占内存不同,不同类型的值在计算机中存储和读取的方式也不同
但是对于指针的类型:int*、char*...
无论哪种类型的指针他们的值都是一种类型:地址编号,那么在计算机中的存取方式也是相同的
所占的内存大小在同一架构下也都是一样的(4or8字节),那么指针还分那么多的类型的意义是什么呢?
意义有两个:
1.不同类型的指针,在解引用时访问的内存大小不同
如:int a; char* p=(char*)&a;
&a本身是一个int*的类型,但通过强制类型转换赋值给char*类型的指针p
那么解引用时,*p这个操作只能访问变量a中的一个字节,而a本身是有四个字节的内存空间
关于访问的是a所占的四个字节中的哪一个字节,这与大小端字节序存储有关,此处不详谈
2.不同类型的指针,决定了指针±整数时跨越的步长(多少字节)
一般情况下,我们都会将指针类型与其所指向的数据类型对应
如int型的变量,存储其地址的指针,一般定义为int*类型
这样做的好处是,在连续的内存空间中,指针±整数时,指针就会指向下一个元素的地址
以上就指针类型的意义,可以灵活的控制要访问一个数据中的多少内存
当指针类型与其所指向的数据类型对应时,可以在连续的内存空间中指向程序员想指的元素
这也是为什么C语言强大的原因之一,灵活度非常高
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页标题:C语言中指针类型的意义-创新互联
本文路径:http://lswzjz.com/article/djcgig.html