指针提供了一种操作地址的方式。因此,使用指针可以使C语言在操作计算机底层硬件时效率更高。此外,通过指针可以更方便地操作数组。数组允许你定义可以存储相同类型数据项的变量。结构是C编程中另一种用户定义的可用数据类型,它允许您存储不同类型的数据项。
目录
本节我们先知道指针1,内存和地址2,变量地址3,指针变量4,指针使用5,指针变量大小,先知道结构1,什么是结构2,结构的定义3,结构的使用。
本节目标
了解内存和地址的相关概念,初步掌握指针的定义和使用,理解结构的概念,掌握其基本用法和存取方法。
初识指针
1、内存与地址
内存是电脑中特别重要的内存,电脑中所有的程序都在里面运行。
*所以为了有效利用内存,内存被划分成小的内存单元,每个内存单元的大小为1字节。*同时,为了有效地访问每个存储单元,对存储单元进行编号,这些编号称为存储单元的地址。
2、变量的地址
变量是在内存中创建的(空间是在内存中分配的),每个内存单元都有地址,所以变量也有地址。
取出变量地址如下:
#包含stdio.h
int main()
{
int num=10
num//取出num的地址
//注意:这里有4个字节的num,每个字节都有一个地址,取出第一个字节的地址(较小的地址)。
printf('%p\n ',num);//打印地址,%p作为地址打印。
返回0;
}
3、指针变量
*指针变量:用来存储指针的变量(指针就是地址)。
# includestdio.h
{
int num=10
int * p;//p是整数指针变量,int*是p的类型,其中*表示p是指针,int表示p指向的变量的类型是int。
p=num
返回0;
}
4、指针的使用
#包含stdio.h
int main()
{
int num=10
int * p=num
* p=20
printf('%d\n ',num);
返回0;
}
Int* p=num:定义一个指针变量p,将num的地址赋给p,那么num的地址存放在p中,也就是说p指向num;
*p=20: *是解引用运算符,*p是对p的解引用,即通过p中存储的num的地址找到num,将num空间中存储的数据10修改为20;
5、指针变量的大小
#包含stdio.h
int main()
{
//%zu:用于打印无符号整数,类似于% u。
printf('%zu\n ',sizeof(char *));
printf('%zu\n ',sizeof(short *));
printf('%zu\n ',sizeof(int *));
printf('%zu\n ',sizeof(double *));
返回0;
}
*所以:指针大小在32位平台上是4字节,在64位平台上是8字节。(本质上,地址线的数量在不同的平台下是不同的)
初识结构体
1、什么是结构体
结构C是一种重要的数据类型,它由一组称为成员(或字段或元素)的不同数据组成,其中每个成员可以有不同的类型。结构通常用于表示几种不同类型但相关的数据。
结构类型不是系统定义的,需要程序员自己定义。c语言提供了关键字struct来标识所定义的结构类型。
关键字struct和structure name被组合成一个类型标识符,它与通常的类型标识符(如int和char)具有相同的状态,并且可以用于定义结构变量,就像int类型标识符标识整数变量一样。定义变量后,它可以像其他已定义的变量一样使用。成员,也称为成员变量,是结构中包含的几种基本结构类型,必须用“{}”括起来,以分号结尾。每个成员都应该指明具体的数据类型。
2、结构体的定义
我们以学生为例:假设一个学生包括五条信息:姓名、年龄、性别、学号。为了从整体上描述一个学生,我们可以定义一个结构类型。
结构研究
{
char name[20];//名称
int age//年龄
char sex[5];//性别
char id[15];//学生ID
};
3、结构体的使用
# includestdio.h
int main()
{
//定义结构变量并初始化它们
Struct Stu s={ '张三',18,'南',' 220210101 ' };
//两种结构访问运算符
//.操作员
printf('%s\t%d\t%s\t%s\n ',s.name,s.age,s.sex,s . id);
//-运算符
struct Stu * PS=s;//定义结构指针变量ps,将S的地址赋给ps
printf('%s\t%d\t%s\t%s\n ',ps-name,ps-age,ps-sex,PS-id);
返回0;
}
注意:-operator只能在已经有结构指针时使用。
关于C语言对指针和结构的超详细解释的这篇文章到此为止。有关C语言指针和结构的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。