嵌入式-C语言-10-枚举/(函数)指针(函数)/多级指针/malloc动态分配/文件操作

本文详细介绍了C语言中的枚举类型,包括其本质、声明和使用。接着讲解了函数指针的概念、声明、初始化和调用,强调了函数指针在回调函数中的应用。此外,还讨论了多级指针的用途,如字符串交互和字符指针数组。最后,阐述了动态内存分配函数malloc和free的使用,以及文件操作的相关函数,如fopen、fclose等。
摘要由CSDN通过智能技术生成

一、复合类型:枚举

1.1.枚举的本质就是一堆整数的集合,列表,就是给整数取了个别名,提高代码的可读性,枚举值默认是从0开始,后面的成员依次加1

例如:250(不具体)---通过枚举的方式----->坏蛋BAD EGG(250的别名)

0-------通过枚举的方式------------->红色RED(0的别名)

1-------通过枚举的方式------------->绿色GREEN(1的别名)

2-------通过枚举的方式------------->蓝色BLUE(2的别名)

1.2.声明枚举数据类型的语法:   

      enum 枚举数据类型名 {枚举值};  (可以不起名)

      例如:enum COLOR {RED, GREEN, BLUE};

      结果:RED=0,GREEN=1,BLUE=2  等价于给0,1,2取别名

      printf("%d %d %d\n", RED, GREEN, BLUE); //0,1,2

      例如:

      enum COLOR {RED, GREEN=250, BLUE};

      结果:RED=0,GREEN=250,BLUE=251  等价于给0,250,251取别名

      printf("%d %d %d\n", RED, GREEN, BLUE); //0,250,251

      结论:将来程序中再描述红,绿,蓝三种颜色,就不需要用0,1,2(代码可读性非常差),用RED, GREEN,BLUE替换0,1,2

1.3.枚举的经典使用代码方式

vim enum2.c 添加

#include <stdio.h> 
/*定义检测函数*/
int check(int a)
{
if(a != 0) {
printf("表示成功了.\n");
return 0; //表示成功
} else {
printf("表示失败了.\n");
return 1; //表示失败
}
}
int main(void)
{
printf("%d\n", check(1));
return 0;
}

提高代码可读性可以采用枚举方法,也就是给0和1取别名:RETURN_OK,RETURN_BAD

改进以后的代码:

vim enum3.c 添加

#include <stdio.h>
//定义枚举数据类型
enum RETURN {RETURN_OK, RETURN_BAD};
//对枚举数据类型取别名
typedef enum RETURN return_t;
/*定义检测函数*/
return_t check(int a)
{
if(a != 0) {
printf("表示成功了.\n");
return RETURN_OK; //表示成功
} else {
printf("表示失败了.\n");
return RETURN_BAD; //表示失败
}
}
int main(void){
printf("%d\n", check(1));
printf("%d\n", check(0));
return 0;
}

二、函数指针

2.1.指针函数

概念:就是一个函数,只是它的返回值是一个指针

                    例如:int *add(int a, int b)

b)函数名就是整个函数里面代码的首地址,简称函数的首地址

   int add(int a, int b)

  {printf("%d\n", a);

printf("%d\n", b);

return a + b;

  }

  add这个函数名就是整个函数add的首地址,就是三条语句的首地址,等于第一条语句,printf函数所在内存的首地址

2.2.函数指针

概念本质就是一种程序员自己定义的数据类型(跟int,结构体数据类型一样的)它保存着一个函数的地址

2.3.函数指针数据类型声明的语法:(不会分配内存并且大型程序中写头文件)

      返回值数据类型 (*函数指针名)(形参表);

      例如:

      int (*pfunc)(int a, int b); //pfunc就是一种数据类型,当成int型来使用

      或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值