C语言期末考试必备的知识点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结 构 体 变 量
stu.age=12; stu.name[0]=„a‟; p=&stu; (*p).age=12; (*p).name[0]=„a‟;
p=&stu; p->age=12; p->name[0]=„a‟;
结构体的特性
1、结构体是自定义的一种数据类型,必须在此 基础上定义结构体变量,对结构体变量才能进行 读写操作,对结构体是不能进行读写操作的。 2、结构体可与数组交叉定义,构成复杂的数据 结构,但使用起来非常方便,这是我们从现在开 始的学习工作中必须要注意的问题。 3、结构体变量可对结构体变量的分量进行读写 操作,也可以对结构体变量整体进行读写操作, 而数组只能对数组元素进行读写操作,不能对数 组整体进行读写操作。
变数的使用(读与写)方法一
变数的使用(读与写)方法二
说明:方法二就是通过指针变量使用该变数存放空间的数值。
在讲指针之前再提存放空间的属性: 大小和地址 大小:是以字节为单位计量的,一个数据占用的 空间就是若干个字节,例如int占4个字节。 地址:每个字节都要地址,空间地址是指该空间 的第一个字节的地址。 指针变量:就是存放地址的变量。所以它也有空 间,也有对应的值。空间的大小不是我们一般类 似int所规定,而是系统的C语言和操作系统所规 定,即地址总线数规定,所以在使用过程中我们 一般不考虑指针变量的空间大小和地址。
Stu称结构体变量 结构体student是自定义 的复杂的数据类型,必 须通过结构体变量发挥 作用。 一个结构体定义后,原 理上就就可以象基本数 据类型char、int等一样 的使用,形式上要加上 关键字struct
变数的初始化方式一
变数类型 变量 一维数组 初始化 int a=1; int a[10]={0,1,2,3,4,5,6,7,8,9};
变数的使用(读与写)方法二
说明:方法二就是通过指针变量使用该变数存放空间的数值。 一维数组 程序段 方法一 int a[10]; a[3]=0; 方法二 int a[10] ,*p1; 第1种 p1=&a[3]; *p1=0; 第2种 p1=&a[0]; *(p1+3)=0; 第3种 p1=a; 数组名是 *(p1+3)=0; 首指针 说明 通过数组名和下标使用数据。 a[3]=0;将数值0写入分配给a[3]空间中 将a[3]数组元素空间地址赋给p1 将0存入(写操作)p1指向的空间 将a[0]数组元素空间地址赋给p1 p1+3 的和是 a[3] 的空间地址,即指向 a[3], *(p1+3)=0将0写入a[3]空间 将数组首地址(数组空间地址)赋给p1 p1+3 的和是 a[3] 的空间地址,即指向 a[3], *(p1+3)=0将0写入a[3]空间
说明:方法二就是通过指针变量使用该变数存放空间的数值。 结构体
变数的使用(读与写)方法二
程序段 struct student stu; stu.age=10; stu.abc[0]=11; 说明
方法一
方法二 第1种
第2种
struct student stu ,*p1; p1=&stu; p1->age=10; p1->abc[0]=11; p1=&stu; (*p1).age=10; (*p1).abc[0]=11;
int a[10],*p 4*10=40
p=&a[3]; p=&a[0];
p=a;
int a[3][4]; int *p 4*3*4 p=&a[2][3];
p=&a[0][0]; p=a;
变数的使用(读与写)方法小结
形式 结 构 体 空间 空间地 址 数值操作 struct student 1*10+4 { char name[10]; +4=18 int age; int abc[3] }; struct student stu,*p;
C语言小结
东西不多都是经典,多么也看不来, 同学们好好的看,争取期末考一个 好成绩
三部分
一、操作对象:数据 二、操作工具:语句 三、完成任务:编程序。将若干个操作按完 成任务的思路进行有序有效组合。
数据
数据: 1、各种字母、数字符号的组合、语音、 图 形、图像等统称为数据。 2、数据的本质是该数据的值,这是数据有意义 的内容。 3、值的表现形式一串二进制数字。这个值是按 数据的表现形式的特点与组成部分存放 4、这个值一定有个空间存放。以字节的倍数位 空间的大小。 5、这个空间一定有地址。
说明:方法二就是通过指针变量使用该变数存放空间的数值。 二维数组
变数的使用(读与写)方法二
程序段 int a[3][4]; a[1][2]=1; 说明
方法一
通过数组名和下标使用数据。 a[1][2]=1;将数值1写入分配给a[1][2] 空间中
方法二 第1种
第2种
int a[3][4] ,*p1; p1=&a[1][2]; *p1=1; p1=&a[0][0]; *(p1+1*4+2)=1;
变数的初始化方式二
说明:初始化方式二,就是在赋值方式。 变数类型 初始化
变量
一维数组 二维数组 结构体变 量
int a; a=1; int a[10]; a[0]=0; int a[3][4] a[0][0]=1; struct student stu; stu.age=10; stu.abc[0]=11;
数据类型
数据使用:就是对数据存储空间的内容(数 据的值)引用(读操作)和修改(写操作) 数据类型(根据使用方式分): 1、常数: 在使用过程中只能用其值不能改变其值 2、变数: 在使用过程中只能用其值也能改变其值
数据的特性
常数 值 有 引用(读操作) 可以 修改(写操作) 不行 存放空间 有 空间大小 根据值的大小和 形式系统自动分 配空间 地址 有 能够知道其地址 不能 变数 有 可以 可以 有 需人工指定空间 大小 有 能够(用&运算 符)
二维数组 int a[3][4]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; 结构体变量 struct student { char name[10]; int age; int abc[3] }; struct student stu={“abc”,10,{10,20,30}}; 说明: 1、初始化方式一,就是在定义时同时给出数据。 2、结构体变量初始化时各分量的初始化完全参见变量与数组的初 始化方法
变数分类
变数的分类(根据一次所能表示数据个数分类): 1、单个数据:变量 2、一批数据(同数据类型):数组 3、一批数据(不同数据类型):结构体
变数的使用原则: 1、先定义后使用; 2、第一次使用必须是写数据,即初始化
变数各种定义
变量 int a; 一维数组 int a[10]; 二维数组 int a[3][4]; 结构体及结构体变量 struct student { char name[10]; int age; }; Struct student stu;
int a[20],i; for(i=0;i<20;i++) { a[i]=i; }
修改了两个地方
#define M 20 int a[M],i; for(i=0;i<M;i++) { a[i]=i; }
修改了一个地方
变数
变数的实质就是能够操作(引用(读)和修改 (写))变数存放空间中数值。也就是说只要 知道这个空间在哪里(地址)和空间大小我们就 能轻易操作该值。
内存的编址是按字节编的,每个字节都有一个 地址。每种数据类型、每一批数据占用的空间 大小是不一样的,C语言中所指的地址是分配 空间的第1个字节的地址。
常数与变数存放空间
机器指令由操作码和操作数两部分组成。 如果操作数是常数,则操作数就是这个常数的 值,所以无法获取常数的地址。也就是机器指 令内包含这个数值。 如果操作数是变数,则操作数就是这个变数在 内存的地址,这个内存(即变数所在内存中的 几个字节)才存放这个变数的值。也就是说机 器指令与变数是分开存放的,所以变数有独立 的地址,我们在程序运行过程中可以获取该地 址。
变数空间的申请
2、动态申请空间 1)、申请空间。是在编写程序时就不能够明 确空间大小,只有在程序运行过程中才知道需 要的空间,例如 int *p; p=(int *)malloc(5*sizeof(int)); 2)、获取空间地址。如果该空间申请成功了 则返回的值就是该空间的地址。例如上例的p
存放空间与地址关系
空间的属性: 1、大小 2、地址
变数的空间大小
变数的数据类型决定变数的空间大小和数据各 个组成部分在该空间中如何存放。 常用的数据类型与空间的关系:
整型 类型名 char short int 字节数 1 2 类型名 float double 实型 字节数 4 8 类型名 char 字符型 字节数 1
变数的使用(读与写)方法二
说明:方法二就是通过指针变量使用该变数存放空间的数值。 变量 程序段 方法一 int a,b=2; a=b+1; 说明 a=b+1;将分配给b的空间数值2读出 加1写入分配给a的空间中 方法二 &是获取地址运算符 * 是对某地址的空间进行操作(读 或写) int a,b=2,*p1,*p2; 定义2个变量,2个指针变量 p1=&a; 将a变量空间地址赋给p1 p2=&b; 将b变量空间地址赋给p2 *p1=*p2+1; 将p2指向空间的值取出(读操作) +1,然后将和存入(写操作)p1指 向的空间
将a[1][2]数组元素空间地址赋给p1 将1写入p1指向的空间 将a[0][0]数组元素空间地址赋给p1 p1+1*4+2 的值是a[1][2] 的空间地址, 即指向 a[1][2], *(p1+1*4+2)=1 将 1 写入a[1][2]空间
第3种 p1=a; 将数组首地址(数组空间地址)赋给p1 数组名是 *(p1+1*4+2)=1; 同第2种 首指针
获取stu的(首)地址 相对方法一,仅用 p1-> 代替 stu. 相对方法一,仅用(*p1)代 替stu
注意结构体指针的写法不同于一般的指针写法
பைடு நூலகம்
变数的使用(读与写)方法小结
变 量 一 维 数 组
二 维 数 组 形式 int a,*p; 空间(字节) 4 空间地址 数值操作
a=1; p=&a; *p=1; a[3]=12; *p=12; *(p+3)=12; *(p+3)=12; a[2][3]=12; *p=12; *(p+2*4+3)=12; *(p+2*4+3)=12;
常数
常数的表现形式: 1、不用符号表示(称常数):123 2、用符号表示(称常量):#define M 123 常量M的说明: 1、定义方式: #define M 123 2、定义位置:通常写在源程序的最前面,仅 在#include之后
常数与常量的使用区别
常数 int a[10],i; for(i=0;i<10;i++) { a[i]=i; } 常量 #define M 10 int a[M],i; for(i=0;i<M;i++) { a[i]=i; }
int unsigned int
long
4 4
8
变数空间的申请
变数空间的申请就是向系统要空间。申请空间的 方法有静态和动态两种。 1、静态申请空间 1)、申请空间。是在编写程序时就能够明确空间 大小,该空间是在程序一运行就能够得到的空间。 例如 int a; 2)、获取空间地址。该空间的地址在运行才能获 取。例如 int a,*p; p=&a;
struct student { char name[10]; int age; int abc[3] };
说明:方法一就是通过名使用该变数存放空间的数值。 变数类型 程序段 访问方式 int a,b=2; 变量 通过变量名使用数据。 a=b+1; a=b+1; 将分配给 b 的空间数值 2 读出 加1写入分配给a的空间中 一维数组 int a[10]; 通过数组名和下标使用数据。 a[3]=0; a[3]=0;将数值 0写入分配给 a[0] 空间 中 二维数组 int a[3][4] 通过数组名和下标使用数据。 a[1][2]=1; a[1][2]=1;将数值1写入分配给a[1][2] 空间中 结构体变 struct student stu; 通过结构体变量名.分量名使用数据。 stu.age=10; 量 stu.age=10;将数值10写入分配给 stu.abc[0]=11; stu.age空间中