1、指针
内存中内存单元的编号称为地址\指针,一个内存单元占一个字节,每个内存单元都有对应的地址编号。
虚拟地址: CPU生成虚拟地址,经过地址线的传递的电信号,高电平为1,低电平为0,就能产生地址。计算机若是32、64位虚拟地址空间,则生成传递的就是32、64位的地址,虚拟地址转换后生成物理地址。
int a=10;
int *pa=&a;//地址
//pa被称为指针变量
*说明pa是指针,int是指pa指向的对象是int 类型的。
总结:(1)、内存会被划分为小的内存单元,一个内存单元的大小是1个字节。
(2)、每个内存单元都有编号,这个编号也被称为:地址/指针
(3)、地址/指针就可以存放在一个变量中,这个变量被称为指针变量
(4)、通过指针变量中存储的地址,就能找到指针指向的空间。
*pa=20;//相当于a=20。即*pa=a
2、指针变量的大小
指针变量是用来存放地址的。地址的存放需要多大空间,指针变量的大小就应该是多大。
地址总线的宽度,取决于CPU的寻址能力。
3、结构体:创建一个新的类型。
结构成员访问操作符: . 结构体变量.结构体成员
创建一个结构体表示学生类型,该结构体在内存中不占空间。相当于盖房子用的图纸
struct Stu
{
char name[20];
int age;
char sex[5];
double score;
};
通过类型创建的对象需要占用空间,相当于用图纸盖出来的房子
struct Stu s1;
三种访问结构成员的方式
输入的时候,变量需要取地址,常量尽量不用。
scanf("%s %d",s1.name,&(s1.age));
4、多组输入,EOF文件结束标志。按ctrl+z,直到退出多组输入
whlie(scanf("%d",&n) != EOF)
while(scanf("%d",&n)==1)
while(scanf("%d %d",&n,&m)==2)