初识C语言——初识指针和结构体

一、电脑的存储空间——了解什么是地址

在购买电脑的时候,我们通常会听到这个电脑是几G几G的,前面的内容代表的就是内存,而后面的内容则代表的是它的硬盘

 

 我们学的C语言是高级语言,其底层是汇编语言,最底层其实就是二进制的机器语言

机器语言是计算机可以直接读取,直接理解的语言。

我们在下软件的时候还有可能遇到不同版本的软件,比如32位计算机适用的和64位计算机适用的。32位计算机指的就是一个地址的大小是32bit位,64位计算机指的就是一个地址的大小是64bit位。

下面我们以32位计算机为例:

如果我们要访问内存,有了地址才能找到内存单元!

怎么样,是不是特别神奇? 了解了地址以后,我们就可以开始介绍指针啦!

二、初识指针

2.1指针变量的创建

前面我们介绍了地址,那现在我们给出指针也就是:

内存的编号=地址=指针

我们再来介绍两个下面将会用到的符号:

&:取地址符

*:解引用符

这里要注意的是:

(1)指针变量ap的数据类型应该与a的数据类型相同 

(2)指针接收的是变量的地址,所以我们要取变量的地址放在=右边,这就会用到取地址符&

(3)ap前的*是在说明ap是指针变量,如果没有*怎么知道你表示的是指针呢?而不是说你的指针就是*ap。所以我也建议大家直接把指针的数据类型记为int*、double*...

(4)我们在调用指针的时候,需要在指针变量名ap前加一个*,这个*代表的就是解引用符,好比指针变量ap是把锁,而想要打开锁就需要一把钥匙*。

2.2指针变量的大小 

2.2.1复习

我们先来回忆一下不同数据类型所占的内存大小:

可以看到不同数据类型占用的内存空间是不同的,右侧代表的内存单位是byte。 

2.2.2指针的大小

指针变量是用来存放地址的,所以指针的大小就取决于地址的大小。

在32位机器中,指针的大小为32bit位,也就是4字节。

在64位机器中,指针的大小为64bit位,也就是8字节。

tips:VS中可以切换32位机器与64位机器 当我们切换成32位机器时

 每个指针的大小就会变成4byte。

 三、初识结构体 

大致了解一下C语言后,我们可以认识到C语言中可以创建的值都太过单一,当现实生活中我们具有姓名、年龄、身高、体重等因素时,我们要如何用C语言把这些因素表示出来呢?这就有了结构体——让我们可以用C语言描述复杂对象的工具。

3.1结构体的创建

结构体的创建要放在main函数的上面,

struct stu{

};

struct是关键词,告诉编译器你要创建结构体了;stu是你给这个函数体起个名字,这个名字通常有意义会容易理解,然后在大括号里就可以创建你想要的信息啦。

紧接着就可以在主函数里去给你的结构体定义啦。

 struct stu是我们之前定义的结构体,在真正使用时,虽然stu是你给结构体取的名,但是此时你还要给每一个使用结构体的信息命名,所以struct stu就可以当成一个你自己定义的数据类型,和其他数据类型int、double一样,语法使用数据类型+命名,也就是struct stu s1.

输入结构体的信息的语法是结构体命名+{  },中间的信息用逗号隔开。然后就可以按照给结构体下的定义依次来输入结构体s1的信息。

3.2结构体信息的打印

接下来如果我想打印结构体要怎么办呢?

 在printf函数里依次打印结构体中的每一个信息,在双引号后面输入的是你给结构体变量取的名然后加“. VS就会自动弹出结构体中信息的关键字了。

即:结构体变量.结构体成员

 3.3指针接收函数体

3.3.1语法

在指针的用法里我们说到我们可以直接记忆指针为 数据结构*命名

在结构体的命名里我们说到在main函数上面定义的结构体我们可以直接当成数据类型

结合一下我们就可以得到语法:struct stu * p=&s1  。

 3.3.2打印结构体

与非指针不同的是,打印指针的结构体的语法变成了:结构体指针->结构体成员

 四、完

猜你喜欢

转载自blog.csdn.net/m0_75186846/article/details/131270395