【C/C++】初识指针、结构体

【C/C++】文章目录

第一节【C/C++】初识C语言

第二节【C/C++】变量、常量及其作用域

第三节【C/C++】初识C语言语句、函数、数组、运算符、关键字


文章目录

【C/C++】文章目录

前言

一、指针

1.内存

2.指针定义

3.指针变量的大小

二、结构体

1.结构体定义

2.结构体初始化

总结


前言

本章节旨在初步认识指针,结构体


一、指针

指针是内存单元的地址,它可能是变量的地址、数组的地址,或者是函数的入口地址。存储地址的变量变量成为指针变量,简称为指针。

简单来说:指针是一种用来存放内存地址的变量。

1.内存

主存储器简称为主存、内存,设在主机内或主机板上,计算机中程序的运行都是在内存中进行的,用来存放机器当前运行所需要的程序和数据。

所以为了有效的使用内存,就把内存划分为一个个小的内存单元,每个内存单元的大小是1个字节。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该 内存单元的地址。

内存是怎么编号的?

我们通常讲的32位/64位系统,是指有32根/64根地址线,通电以后形成电信号1-正电,0-负电,计算机中电信号转换为数字信号0和1组成的二进制序列。

 变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

 获取变量的地址,使用地址运算符&打印地址使用%p。方法如下:

 可以看出这里a的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)。

2.指针定义

了解了内存,及内存编号,内存地址,地址怎么存储呢?因此有了指针变量。

指针变量就是用来存放内存地址的。

int main()
{
	int num = 10;
	int* p;//p为一个整形指针变量
	p = #//指针变量p存储变量num的地址
	return 0;
}

int * p = #

解析:

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

可以看到,指针变量p中存放的值是一个地址,是变量num的4个字节大小地址中的首地址0x0133FE60。 

指针的使用示例:*称为间接运算符,其作用是获取指针所指向的变量。

 可以看到num的值由10 变为了20。

*p = 20;解析:

*对p进行了解引用操作,获取到p所指向的变量num后为其赋值20。

以整形指针举例,可以推广到其他类型,如:

char *,int *,short *,long *, float *,double *等。

3.指针变量的大小

指针变量存放的是内存地址,那指针变量的大小取决于取决于地址的大小。

32位平台下地址是32个bit位编号(即4个字节),

64位平台下地址是64个bit位编号(即8个字节)。

结论 :指针大小在 32 位平台是 4 个字节,64位平台是 8 个字节。

二、结构体

结构体可以把一个数据元素的各个不同的数据项聚合为一个整体。结构体可以使得C语言有能力描述复杂类型。

1.结构体定义

struct 结构体名 {

        成员表列

}

比如描述学生,学生包含:姓名+年龄+性别+学号这几项信息。

这里只能使用结构体来描述了。

int main()
{
	struct Stu
	{
		char name[20]; //姓名
		int age;       //年龄
		char sex[5];   //性别
		char id[5];    //学号
	};
	return 0;
}

2.结构体初始化

初始化时,值的顺序要与在结构体中的顺序一致。

结构体访问可以使用.操作符->操作符。 

.使用方式:

结构体变量.结构体成员变量名

->使用方式:

结构体指针->结构体成员变量名

结构体指针变量:

struct Stu * ps = &s;

 


总结

本章节主要初步认识了指针变量,指针变量大小,结构体创建和初始化。

还补充了之前没有介绍的操作符的使用,如&—地址运算符,*—间接运算符,.—结构体访问成员操作符,->—结构体访问成员操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值