网站首页 > 文章中心 > 其它

C语言函数笔记方法教程

作者:小编 更新时间:2023-09-06 08:53:14 浏览量:438人看过

C语言笔记(五)----struct,enum,typedef等

成员表列由若干个成员组成,每个成员都是该结构的一个组成部分.

对每个成员也必须做类型声明.

其形式为:

类型声明符 成员名;

例如:

注意, 最后括号外面的;分号是不可少的 .

C语言函数笔记方法教程-图1

结构定义之后,才可以进行变量声明.

由此可见,结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合.

声明结构变量 有以下三种方法.

使用上面定义的stu为例:

如:

也可以用宏定义使一个符号常量来表示一个结构类型.例如:

这种形式的声明的一般形式为:

这种声明的一般形式为:

第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量.

在程序中使用结构变量时,往往不把她作为一个整体来使用.

在ANSI C中除了允许有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括 赋值、输入、输出、运算 等都是通过结构变量的成员来实现的.

表示结构变量成员的一般形式为:

结构变量名.成员名

如果成员本身又是一个结构,则必须逐级找到最低级的成员才能使用.如: boy1.birthday.month

结构变量的赋值就是给各成员赋值.

数组的元素也可以是结构类型的.

所以呢可以构成结构型数组.

初始化赋值:

当然也可以在定义 stu结构 时同时声明 pstu.

赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量.

如果 boy 是被声明为 stu类型 的结构变量.

则:

有了结构指针变量,就能更方便地访问结构变量的各个成员.

其访问的一般形式为:

(*结构指针变量).成员名

结构指针变量-成员名

例如: (*pstu).num 或 pstu-num

介绍数组的时候,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变.

C语言中不允许动态数组类型.

但是又有此需求,为了解决这个问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段.

例子:分配一块区域,输入一个学生数据

上面的例子采用了动态分配的办法为一个结构分配内存空间.

每一次分配一块空间可用来存放一个学生的数据,我们可称之为一个节点.

有多少个学生就应该申请分配多少块内存空间,也就是说要建立多少个节点.

当然用结构数组也可以完成上述工作,但如果预先不能准确把握学生人数,也就无法确定数组大小.

而且当学生留级、退学之后也不能把该元素占用的空间从数组中释放出来.

用动态存储的方法可以很好地解决这些问题.

有一个学生就分配一个节点,无须预先确定学生的准确人数,某学生退学,可删去该节点,并释放该节点占用的存储空间,从而节约了宝贵的内存资源.

另一方面,用数组的方法必须占用一块连续的内存区域.

而使用动态分配时,每个节点之间可以是不连续的(节点内是连续的).

节点之间的关系可以用指针实现.

即在节点结构中定义一个成员项来存放下一节点的首地址,这个用于存放地址的成员,常把他称为指针域.

可在第一个节点的指针域内 存入第二个节点的首地址,在第二个节点的指针域内 又存入第三个节点的首地址,如此串联下去直到最后一个节点.

最后一个节点因无后续节点连接,其指针域可赋值 0

这种连接方式,在数据结构中称为"链表".

链表的基本操作主要有以下几种:

例子:建立一个三个节点的链表,存放学生数据.为简单起见,我们假定学生数据结构中只有学号和年龄两项.可编写一个建立链表的函数create.程序如下:

create函数 用于建立一个有 n个节点 的链表,他是一个指针函数,他返回的指针指向 stu结构.

在create函数内定义了三个 stu结构 的指针变量.

head为头指针,pf为指向两相邻节点的前一节点的指针变量.

pb为后一节点的指针变量.

枚举是一种 基本数据类型 ,而不是一种 构造类型 ,因为他不能再分解为任何基本类型.

enum 枚举名{ 枚举值表 };

例如: enum weekday { sun,mou,tue,wed,thu,fri,sat };

enum weeakday a,b,c;

或者为:

enum weekday { sun,mou,tue,wed,thu,fri,sat }a,b,c;

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

例子:

说明:

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量.如:

a=sun;b=mon; 是正确的

a=0;b=1; 是错误的.

如果一定要把数值赋予枚举变量,则必须使用强制类型转换.

还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号.

typedef定义的一般形式为:

typedef 原类型名 新类型名

其中原类型名中含有定义部分,新类型名一般用大写表示,一般用大写表示,以便于区别.

有时也可用 宏定义 来代替 typedef 功能,但是 宏定义 是由 预处理 完成的,而 typedef 则是 在编译时 完成的,后者更为灵活方便.

使用 typedef 定义数组、指针、结构等类型将带来很大的方便,不仅使书写简单而且使意义更加明确,因而增强了可读性.

又如:

c语言中怎么调用函数?谢谢

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表.实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式.各实参之间用逗号分隔.

#includestdio.h

int?fun(int?x,?int?y);?//?函数声明,如果函数写在被调用处之前,可以不用声明

void?main()

{

c?=?fun(a,?b);?//?函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值

}

//?自定义函数fun

int?fun(int?x,?int?y)?//?函数首部

{?//?{}中的语言为函数体

return?xy?x?:?y;?//?返回x和y中较大的一个数

扩展资料

C语言中不允许作嵌套的函数定义.所以呢各函数之间是平行的,不存在上一级函数和下一级函数的问题.但是C语言允许在一个函数的定义中出现对另一个函数的调用.

这样就出现了函数的嵌套调用.即在被调函数中又调用其它函数.这与其它语言的子程序嵌套的情形是类似的.其关系可表示如图.

图表示了两层嵌套的情形.其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行.

参考资料:函数调用_百度百科

C语言中怎样调用函数(举个例子)

C语言中调用函数的方法及步骤:

工具/原料:C语言

①.、首先需要输入想要调用的函数.

如何写C语言函数?

①.、打开C-Free,按ctrl+N创建一个新的文件.

c语言的函数名怎样记

函数名的记忆应靠理解,不应该死记硬背.

在C语言中,需要使用的函数有多种,将他们分类,实际上,已经进行分类了,查看一下头文件即可.如

stdio.h --- standard input/output 标准输入输出头文件

string.h -- string 字符串

math.h -- 数学

conio.h -- console input/output 控制台头文件 等等 .

再如:

c语言中用到的输入输出函数

基本【scanf , printf】

控制台基本【 cscanf , cprintf】

字符串基本【 sscanf , sprintf 】

文件基本【 fscanf , fprintf 】 等等

单个字符操作: 【putc,getc】 【putchar,getchar】 【fputc,fgetc】 等等

字符串函数: strlen -- string length ; strcpy --- string copy ;

自己仔细分析就可举一反三.

学c语言如何做笔记

我自学C语言的时候的笔记只记程序,然后在程序旁边写下程序中新学的知识,比如

刚学的时候

#include stdio.h

main()

printf("Hello!");

每个C程序的基本格式是:

后来学到

int x;-----要用的变量,先声明,

x=1;

printf("x=%d",x);----^.....

如此类推了,这样不了解就可以运行程序式式,我自己感觉还不错,就是有时候,要写太多了.

以上就是土嘎嘎小编为大家整理的C语言函数笔记方法教程相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章