c语⾔数据类型的⼼得体会,C语⾔学习与感悟——《C语⾔学习
基本框架》
前⾔
博主在⼏年前的C语⾔后中,结合⾃⾝学习情况和学习感悟在当时的⼀个寒假做了两份C语⾔学习的经验总结,分别为 《C语⾔学习基本框架》 和 《C语⾔学习基础程序》,
现在把它们分享出来,供⼤家交流学习,如果能给初学C语⾔的⼩伙伴们提供⼀些帮助也是不错的,想当初我也是从C语⾔的折磨中⾛出来的,吼吼吼!
⼀、C语⾔模式
(1). C程序的基本构成:
1.主函数 int main()
2.变量定义和初始化 int n=345
3.函数的调⽤和⽂件包含命令 #include
4.基本输⼊输出语句 如:scanf(…), printf(…)
5.结束语句 return 0(void类型不需要)
(2). C程序的简单算法:
for循环语句、
while-do循环语句、do-while循环语句、
if-else控制语句、
switch-case控制语句…
(3). C语⾔基本数据类型:
内置类型:
1.整形: int
2.实型(浮点型): float
3.字符型: char
4.空类型: void
⾃定义类型:
枚举型: enum
(4). 运算符及表达式:
特有表达式:⾃增++、⾃减–
复合表达式:+=、-=、*=、/=、%=
条件表达式:表达式1? 表达式2:表达式3
逗号表达式:表达式1,表达式2,表达式3…
关系运算符:< <= > >= == !=
逻辑运算符:&& || !
(5). 类型转换:
(类型标识符)转换对象 例:a=(int)3.14
⼆、函数
(1).函数的⾃定义与调⽤:
定义:返回值类型标识符 函数名(形参列表)
{
⼀组语句;
};
形参格式:(类型标识符1 变量1,类型标识符2 变量2… )
调⽤:被调函数名(实参列表)
实参格式:(表达式1,表达式2…)
(2). 函数的声明与定义:
函数声明:返回值类型标识符 函数名(形参列表)例:int total(int n)
函数定义:要求编译器⽣成代码并为之分配储存空间.
注:(只有当函数被调⽤时,函数才分配储存空间,才有了定义.)
(3). 函数与变量的储存类别:
⾃动局部变量auto:⾃动局部变量也称“⾃变量”,其⽣命周期是⼀次函数的调⽤时间.
静态局部变量static.:其⽣命周期是从初始化开始,到整个程序结束.与⾃变量有共同的作⽤域.
外部变量:在函数外部定义的变量称为外部变量,它的⽣命周期从编译阶段开始,直到程序结束. 它的作⽤域是其定义后的所有函数.
(4). 模块化程序设计:
所谓模块化程序设计,就是按类划分和管理函数,每⼀类包含在⼀个源⽂件(.c⽂件)中,每⼀个源⽂件,称为⼀个模板,可以独⽴编译,其中⼀个模块包含主函数(main函数),称为主控模块,每⼀个模
块可以独⽴编译,但不能运⾏;编译之后,再进⾏模块之间的链接,形成⼀个可运⾏的程序.
三、⼀维数组和指针
(1). 指针和指针传递:
指针;⼀个对象的(地址,类型)称为该对象的指针.
指针传递:把⼀个对象的指针作为参数传递给形参指针传递.
指针的定义:类型标识符 *指针变量名 ,例: int *p
指针的初始化:int *p=&x;(&为指针提取符)
(2). ⼀维数组:
定义:⼀维数组是⼀个类型相同、空间相邻、个数有限的对象序列,每⼀个对象称为数组元素,数组元素的 个数称为数组长度和数组容量.
格式:类型标识符 数组名[数组长度] 例: int a[5]
初始化格式:int a[5]={5,10,15,20,25} (初始化数据不⾜,系统⽤0来填充)
(3). ⼀维数组和指针:
两者关系: 如果⽤数组名表⽰数组⾸元素的指针,对⼀个对象,其指针加1的结果是其后续的指针,减1的结果是其前驱的指针,⽽⼀个对象的前驱和后续分别表⽰与该对象前后相邻类型相同的对象.
例:int a[5]={5,10,15,20,25,}
数组名a表⽰数组⾸元素a[0]指针,a+1表⽰a[1]的指针…,如果指针前加上间接访问符* ,则可直接表⽰相应元素a=a[0],(a+1)=a[1]…
(4). 动态数组:
动态分配函数malloc: void*malloc(unsigned size)
计算类型长度函数sizeof: sizeof(类型说明符,数组名或表达式);
常见使⽤: int p=(int )malloc(5sizeof(int));
四、C字符串
(1). 字符常量和字符串变量:
常量:“China"
变量:char a[]
赋值:char a[]="China"
(2). 字符串标准输⼊输出函数:
字符串标准输⼊函数:
int gets(char c)
字符串标准输出函数:
int puts(char c)
(3). 字符串基本操作函数:
字符串基本操作函数包含在标准头⽂件中.
求字符串长:
int strlen(const char c)
字符串复制:
char strcpy(char c,const char c1)
字符串连接:
char strcat(char c,const char c1)
字符串⽐较:
int strcmp(char c,const char c1)
改变字符串的⼤写:
char strupr(const c)
改变字符串的⼩写:
char strlwr(const c)
(4). 字符串函数补充:
取⼦串:
char Substr(const c,int id,int num,char c1)
字串插⼊:
char Strinsert(char c,int id,const char c1)
字串删除:
char Strerase(char c,int id,int num)
字符查:
int Chfind(const char c,char ch,int id)
五、结构体,联合体和枚举
(1). 结构体定义:
struct 结构体名 { 成员声明列表 };
(2).typedef修改名字:
typedef的应⽤格式:typedef 已有的类型名 类型别名;
typedef struct
{
int yr,mo,day;
)Date;
(3). 结构体变量/数组:
结构体变量初始化:
Date dt=(2020,1,1)
结构体成员的表达格式:
结构体变量名.结构体成员名: dt.yr
结构体指针->结构体成员名: p->yr
(*结构体指针).结构体成员名:(*p).yr
结构体数组初始化:
Student a[3]={{20151001,"Marry",80},{20151002,"Tom",89},{20151003,"Mike",90}};数组元素中结构体成员的表达格式:
结构体数组[下标].结构体成员: a[1].num
(*(结构体数组+下标)).结构体成员: ((*a+1)).num
(结构体数组+下标)->结构体成员: (a+1)->num
(4). 联合体:
定义: union 联合体名 { 成员列表 };
特征:
联合体变量可以初始化,但只能初始化第⼀个成员.联合体变量在初始化之后每次只能访问⼀个成员.
(5). 枚举:
定义:enum 枚举类型名(枚举常量1,枚举常量2,…枚举常量n);
特征:
c语言listinsert函数每⼀个枚举常量都表⽰⼀个整数,默认情况下,它们的值依次为0,1,…n-1.有时也可以改变默认值。例如;enum colors(red=1,green,blue);
六、顺序表
(1). 顺序表的定义:
typedef struct {
Type *date;//Type表⽰待定的数据类型,指针date指向动态数组
int size; //数组date的数据个数
int max; //数组date的容量
}Seqlist;
(2). 顺序表的声明:
//准构造函数和准析构函数
void IniList(Seqlist *l,int n);//⽣成空表
void FreeList(Seqlist *l);//释放动态数组空间
//⽤于修改的基本操作函数
void InsertRear(Seqlist *l.Type item);//尾插⼊
void Insert(Seqlist *l,int id,Type item);//定点插⼊
void Erase(Seqlist *l,int id);//定点删除
void Clear(Seqlist *l);//清表
//⽤于读取的基本操作函数
Type Getdate(const Seqlist*l,int id);//取值
int Size(const Seqlist *l);//取数据个数
int Empty(const Seqlist *l);//判空
int Full(const Seqlist *l);//判满
七、链表
(1). 链表的定义:
typedef struct
{
Node *head;
Node *tail;
int size;
}List;
typedef struct
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论