初探C语言(三)

这篇重点是介绍指针,同时也是C语言学习的重点。另外尽量对之前遗漏的一些 内容进行补充

目录

指针

内存

取地址符

存储地址

解引用操作符

 指针变量的大小

结构体

补充

结尾


指针

首先我们口头上说的指针一般是指针变量,而要说明指针变量则需要从内存开始

内存

内存是计算机的存储器,作用是暂时存放CPU运行时的数据。

为了更加有效地使用内存,就将内存划分成多个小单元,一个小单元的大小为1个字节。

那如何对这些小单元进行访问?

答案是给每一个小单元进行编号,通过编号进行访问,这些编号又称为这些内存单元的地址。

指针变量就是用于存放地址的变量

取地址符

之前介绍操作符时有介绍取地址符(&),但只是一笔带过,这里着重介绍

假设新建一个变量a

char a= 1;

通过“&”即可找到变量所处的内存单元的地址

 如果是int float等这些大于1个字节的变量则打印第一个字节的地址

存储地址

存储地址前需要定义一个指针变量,以上述的变量a为例

char*p
p=&a;

p是变量名称,*表示这是一个指针变量,char表示变量指向的对象类型

解引用操作符

我们存储地址的目的是希望通过地址找到对应的对象和改变对象,这就需要解引用操作符“*”来完成,具体使用如下

 指针变量的大小

首先,指针变量的大小与*前面的数据类型无关,指针变量的大小只与计算机的操作系统有关。计算机的操作系统一般我们听过最多的是32位或64位,这里的32和64指的是地址线的数量。地址线是用于传输地址信息用的。在数字逻辑电路中有高电平和低电平之分,低电平表示0,高电平表示1。32位操作系统的32根地址线同时通电就产生32个二进制位,大小为4byte,64位同理,大小为8byte。所以在32位操作系统中指针变量大小为4byte,64位操作系统为8byte。

结构体

结构体的出现是为了描述一些复杂的对象,比如描述一株植物,它属于什么科?根、茎、叶、花果有什么特点?有什么显微特征等。结构体的基本使用如下

那是否可以使用指针来访问?

答案是可以,假设定义一个指针变量来指向结构体

struct games*ps=&gta;

 打印结构体成员时(以第一个成员为例)gta.name换成ps->name即可

补充

  • 在使用printf函数进行打印时经常会写%d、%c等这些符号,它们表示打印数据时以什么样的形式来打印,常见的如下

%d:整数型十进制数据

%f:浮点数

%p:地址

%x:十六进制

%o:八进制

%lf:双精度浮点数

%c:字符

%s:字符串

%u:无符号数

  • 负数存储在内存中的补码有所不同

整数在打印时以原码打印,存储时以补码存储,整数和0的原码和补码相同,但负数却不一样。

首先,整数的二进制的最高位为符号位,符号位为1表示这是负数,负数的原码符号位不变,其它位按位取反得反码,反码+1得补码。

结尾

C语言的主要的内容基本上介绍完毕,各个内容的深层次的知识点在后续的时间里会不断更新,不足的地方欢迎更正,感谢你看到这里。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星鸦wyk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值