文章目录
一、指针
指针是C语言中一种特殊的变量类型,与其他类型的变量不同,指针变量存储的不是变量,而是变量的地址。
那么什么是地址?这就不得不提到内存
- 内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号(十六进制),这些编号被称为该内存单元的地址。
1. 指针的概念
如果在程序中定义一个int型的变量a:
int a = 10;
那么编译器会根据变量a的类型int,分配4个字节地址连续的存储空间。如果这块连续空间的首地址为0x010FF7A0,那么这个变量占0x010FF7A0~0x010FF7A4这四个字节的空间,0x010FF7A0 就是这个变量的地址。我们可以通过变量的地址找到该变量,而该地址就是指向该变量的指针。
如果将内存空间视为酒店,那么内存单元好比酒店中的房间,地址好比酒店中房间的编号,而内存空间中存储的数据就相当于房间中的客人。
2. 指针变量的定义和初始化
- 定义
定义指针变量的语法格式如下:
先定义再初始化
int num = 10;
int *p;//p为一个整形指针变量
p = #
也可以在定义的同时为指针变量初始化
int num = 10;
int *p = #
3. 指针变量的类型
由整形指针,可以推广到其他类型:
#include <stdio.h>
int main()
{
char ch = 'e';
char* pc = &ch;
*pc = 'm';
printf("%c\n", ch);
return 0;
}
4. 指针变量的大小
指针变量的大小取决于地址的大小
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
所以上面代码的输出结果都是4或8。
二、结构体
①. 结构体类型定义
结构体是一种构造数据类型,可以把不同类型的数据整合在一起,每一个数据都称为该结构体类型的成员。
struct Student
{
int num;
char name[10];
char sex;
int age;
};
结构体类型中的成员,也可以是一个结构体变量
struct Date
{
int year;
int month;
int day;
};
struct Student
{
int num;
char name[10];
char sex;
int age;
struct Date birthday;
};
②. 结构体变量的定义
- 先定义结构体类型,再定义结构体变量
struct Student stu1, stu2;
- 在定义结构体类型的同时,定义结构体变量
struct Student
{
int num
char name[10];
char sex;
int age;
} stu1, stu2;
③. 结构体变量初始化
- 在定义结构体类型和结构体变量的同时,对结构体变量初始化
struct Student
{
int num;
char name[10]
char sex;
}stu={20220101,"Zhang San",'M'};
- 定义好结构体类型后,对结构体变量初始化
struct Student
{
int num;
char name[10];
char sex;
};
struct Student stu ={20220101,"Zhang San",'M'};
④. 结构体成员访问
- 使用成员访问运算符
.
来访问变量 s中各成员;
#include <stdio.h>
typedef struct Student//定义一个结构体
{
int num;
char name[20];
int age;
float height;
}STU; //用typedef给结构体起别名为STU
int main()
{
STU stu = { 0 };//定义一个结构体变量并初始化
scanf("%d%s%d%f", &stu.num, &stu.name, &stu.age, &stu.height);
printf("%d %s %d %.2f \n", stu.num, stu.name, stu.age, stu.height);
return 0;
}
- 通过结构体指针访问
#include <stdio.h>
typedef struct Student//定义一个结构体
{
int num;
char name[20];
int age;
float height;
}STU; //用typedef给结构体起别名为STU
int main()
{
STU stu = { 0 };//定义一个结构体变量
STU* ps = &stu;//定义一个结构体指针
scanf("%d%s%d%f", &ps->num, &ps->name, &ps->age, &ps->height);
printf("%d %s %d %.2f\n", ps->num, ps->name, ps->age, ps->height);
return 0;
}
总结
《C语言入门》到此就结束了,谢谢小伙伴们的支持。期待我们下一次相遇,下一次学习。