初级指针和结构体以及内存的基本介绍

内存

内存在电脑中是特别重要的存储器,计算机中所有程序的运行都在内存中进行。

这是电脑中的内存,每一个内存单元格对应了一个地址,一个内存单元大小是1字节。

大家看这个内存结构是不是有点像一栋大楼,每一层居住了一户人家,我们要去访问人家的话,就需要这户人家的地址,而一层与一层之间的地址差又是一样的,比如说他是105,上面的就是106 。一个道理,内存在电脑中也是一样的存储形式,这样理解起来会不会轻松一点。

我们再了解一下计算机内存的工作原理。

首先32比特位机是由32根地址线连接的,这些地址线是通电的物理线,正电的话表示的就是1,负电就是0 。用这种原理就可以将电信号转化为数字信息 :1 和0组成的二进制序列。

 因此可以管理 2^32个字节单元,换算下来差不多就是4GB大小的空间。

而同理在64位机上就是2^64个字节单元,差不多就是8/16/32GB大小的空间。

指针

比如说  int a=0;对于a这个变量,在内存中需要为它开辟4个字节大小的空间。

按上文所述,要想找到a在内存中的位置,我们可以这样做:

 我们用取地址操作符 & 取出a的地址,将其打印出来。%p是专门用来打印地址的。

 我们现在想主动找到a的地址, 这里p是用来存放a的地址的,在C语言中叫指针变量。

* 是说明p是指针变量,int 即p指向的类型。

那么有了地址,我们怎么在后面找到它呢?

 *p是解引用操作,通过*p就能找到a的地址所在。从而改变a的数值。

 我们可以看到,每种指针类型的大小都是一样的,与char 、int 所占内存的大小没有关系。

我们能得出结论:指针是用来存放地址的,指针需要多大空间,取决于地址的存储。

在32位机(X86)上,指针类型大小都是4 ,  64位机(X64)上是8 。

结构体struct

结构体把一些单一类型组合在一起,它使得C语言能描述复杂类型。

例如描述一串数字我们可以用long long ,也可以用char 字符串,但是要描述一个集合,比如一个人的基本信息,就不可能只用一个类型,这时C语言允许我们自定义类型去描述他,这就要用到我们的结构体。

例如:描述一本书(书名、书的编号、书的作者)

 这样我们就描述了一本书,并将它的各个信息打印出来了。

这里有个结构体中的操作符  ‘.’   结构变量 . 成员变量

如果用我们今天说的指针的方式表示的话:

 如果未给出a的信息,只给出了a的地址,可以用这种方法。

’或者

 结构体指针  -> 成员变量

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值