为什么需要类型?它仅仅表示一个地址,无论什么类型的变量,不都是用地址来表示的吗?
首先要明白,两个重要的概念:
1.一个地址能存储一个字节,这个概念极其重要;
2.一个指针永远只能指向一个地址(也就是一个字节),当指向int时,int有四个字节,那么只能指向它的首地址。
不同角度的理解:
1. 指针也是一个变量,因此也叫指针变量,那么是变量就需要有类型。它存储在内存中,当访问指针指向的内容时,先去这个指针变量地址处拿到地址,再去这个地址去操作。
2. 一个指针永远只能指向一个地址(也就是一个字节),当指向int时,int有四个字节,那么只能指向它的首地址。解引用时编译器会根据指针变量的类型来进行,因此int型指针解应用后是整个int变量的值,而不仅仅是那个指针指向的那一个字节处的值,这也是指针变量需要类型的原因之一。
3. 当涉及到*(p+1)这种操作时编译器也会根据p的类型,自动调整所需增加的地址。如果时int型的p,那么这里加一,实际地址加4。
如果是char型的p,那么这里加一,地址就是加一。
更多关于物联网培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。