编程五行属于什么?
在C语言中,变量是没有类型的概念的。 那么什么是变量的类型呢? 这要从计算机如何存储数据说起。 在计算机中,所有数据的表示都是二进制的。例如一个整数12345可以用8个二进制位来表示(8字节),这8个字节用0xFFEEAA99来表示,其中前三位是0xFF、0xEE和0xAA,后五位是0x99(注意:这里为了表示方便,将小端法变成了大端法);如果使用6个二进制位就表示不到了,必须增加长度了。这就是数据的基本单位--字节的概念的来源。
每个整数以8位为单位进行存储时,称为一个字节;以两个字节为单位进行存储时,称为一个字;以四个字节为单位进行存储时,称为双字。同样,当数字过大需要更多字节的时候,就需要以多个字节为单位来进行存储了。 而在计算机系统中,对于不同长度的数据进行运算是有不同的运算指令的。比如说加法,如果是32位和32位的数据进行运算的话,就需要调用32位的加法器,而如果是64位的数据就要调用64位的加法器的。所以,计算机在设计之初就将各种不同类型的数据的长度规定好了,使得能够以最合适的方式去进行计算,这种数据的长度称之为数据类型。
既然没有所谓的变量类型,那所谓变量的类型又是什么呢?其实,我们所说的变量的类型就是该变量所存放的数据的类型而已!只不过在C语言的规范里面,默认的所有变量都按照float型来计算和存储。 而C语言中的int实际上是一个宽度的指针,它最多可以指向2^32字节的空间地址。但实际的应用场合下,int一般只用来保存整数或者小的浮点数。
所以在上面的代码里,a和b是两个整形变量,int型的size为4个字节,而b是a的拷贝,其值也是3*3+4=13,但是其所占据的内存在空间上是独立的,不会影响到a的内存空间的任何部分;而如果c是个指针,它最多只能有2^32字节的空间范围,也就是说,它的值可以是2的32次方以内任意的一个数值,但是这个值的所指出的这个内存单元必须是2^32字节以内的连续地址。所以c = &a;的结果是把a的起始地址放到了c所指出的那个内存单元开始的那块连续区域里;同理d = c++就是把c所指出的那一块区域的下一个连续区域的内容给赋给了d. 所以这里的c, d实际上是两个指针,而不是所谓的“int指针”或“整形指针”。
所以楼主的问题就解决了嘛~