Crack C语言之-指针之一

C语言中基本数据类型有:
基本数据类型:short(短整型)、int(长整型)、long(长整型)、单精度型(float)、双精度型(double)、字符类型(char) 。
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。
现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。在32 位的系统上short 咔出来的内存大小是2 个byte;int 咔出来的
内存大小是4 个byte;long 咔出来的内存大小是4 个byte;float 咔出来的内存大小是4 个byte;double 咔出来的内存大小是8 byte;char 咔出来的内存大小是1 个byte。
指针:int *p;定义了一个指针p。任何一种数据类型我们都可以把它当成一个模子。p毫无疑问是某个模子里咔出来的。任何模子都有特定的大小,测试sizeof(p)的值为4,可这个模子不是"int", 虽然它的大小也是4,那它一定是"int *"了。一个【int *】 类型的模子在内存上咔出来了四个字节的空间,然后把这个四个字节大小的空间命名为p,同时限定这四个字节的空间里面只能存储某个内存地址,即使你存入别的任何数据,都将被当作地址处理,而且这个类存地址开始的连续4个字节只能存储某个int类型的数据。
用下图来解析:

如图所示,我们把p称作指针变量,p里面存储的内存称为p所指向的内存。指针变量p里存储的任何数据都被当作地址来处理。
可以这样理解:一个基本的数据类型(包括结构体等自定义类型)加上*号就构成了一个指针类型的模子。这个模子的大小是一定的,与*前面的数据类型无关。*前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以在32位系统下,不管什么样的指针类型,其大小都是4bytes。

 

结果都为4。
"*"与防盗门的钥匙
这里这个"*"号怎么理解呢?举个例子:当你回到家门口时,你想进屋第一件事就是拿出钥匙来开锁。那你想想防盗门的锁芯是不是很像这个"*"号?你要进屋必须要用钥匙,那你去读写一块内存是不是也要一把钥匙呢?这个"*"号就是不是就是我们最好的钥匙?使用指针的时候,没有它,你是不可能读写某块内存的。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值