结构体
1.结构体类型的定义
struct 结构体类型名
{
类型说明符 成员名1;
类型说明符 成员名2;
类型说明符 成员名3;
};
结构体类型是将数据根据用户需要分装成一个整体。
2.结构体变量的定义
结构体类型是类似于int的一种数据类型,不能保存数据,但是可以用来定义变量,然后将数据保存到结构体变量中。
例如
struct stu_type{
char name;
int age;
int c;
int math;
};
可以用其构造三个结构体变量 struct_type stu1,stu2,stu3;分别储存三个学生的信息。与int i,j,k对比,struct_type相当于int,stu1,stu2,stu3相当于i,j,k。
2.结构体变量的使用
格式:结构体变量名.成员名
eg 第一个学生的c语言成绩
stu.c=80;
scanf("%d",&stu1.c);
printf("%d",stu1.c);
3.在定义结构体类型的同时定义结构体变量
struct stu_type{
char num[15];
char name[10];
int age;
int c;
int en;
}stu1,stu2;
4.结构体数组的定义和使用
结构体数组的格式:struct 结构体类型名 数组名[下标];
eg struct stu_type stu[100];
结构体数组的使用
结构体数组名[下标].成员名
eg 对第一个学生的各科成绩进行赋值
stu[0].c=60;
stu[0].math=70;
stu[0].en=80;
结构体数据的初始化
struct stu_type stu[3]={{"101","zhangxiao",21,80,70,60},
{"102","wangxi",22,81,71,61},
{"103","liming",22,30,50,70}};
数组
一维数组
数组的下标不能为变量:定义数组是需要为数组分配储存空间,若下标为变量则不能确定储存空间的大小。
初始化
int a[5]={0,1,2,3,4};
数组在定义时若不进行初始化,则各元素的初值是随机的。
初值个数小于数组长度,只给前面的元素赋值,后面元素自动赋默认值。
若给出了全部数组元素的初值,定义数组时可以省略数组元素的个数。
二维数组
类型说明符 数组名[行长度][列长度];
初始化
分行赋初值
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
顺序赋初值
int a[3][3]={1,2,3,4,5,6,7,8,9};与上面的等价
字符数组
a[0]='c';
scanf("%c",&a[0]);
printf("%c",a[0]);
初始化
char a[8]={'c','h','a'};
如果初值个数小于数组长度,则只给字符数组前面的元素赋值,后面的初值为空字符'\0'
指针
定义 计算机在运行程序时会把数据和程序放在内存中。内存是以字节为单位的连续的储存空间,每一个字节有一个唯一的编号(地址)。如果在程序中定义了某个变量,c编译系统会根据该变量的数据类型,为其分配一定字节数的储存单元。
变量的地址称为指针。
指针变量的定义和使用
定义 基类型 *指针变量名
int a=2,*pa,*pb; 定义整型指针变量pa,pb
char c='a', *pc; 定义字符型指针变量pc;
pa=&a; 指针变量pa存放变量a的地址,即指向变量a;
pb=pa;pb和pa一样指向变量a
指针变量只能存放地址,不能将整数或其他非地址类型的数据赋给指针变量。
将地址赋给指针变量时,变量名前不能加*。