菜鸟自学嵌入式之C语言基础No4

c基础很薄弱,仅限非计算机专业大学学的那点点基础。以后会每天更新个人的学习笔记。菜鸟的我是这样学下来滴。走过路过的,不许笑话。有缘看见的,欢迎指点。


函数名本身作为指针,指向函数代码首地址

函数体放在代码区

1.返回值为指针的函数成为指针函数

2.函数指针:指向函数的指针

函数声明类型一致,函数指针类型一致

void fun (char *b ); 函数指针为 void (*ptr)(char *);

赋值形式 ptr=fun;

3.调用函数:两种形式相同

fun();

ptr();

4.函数指针的应用

函数名不可以改变指向,指针可以改变指向

用函数指针调用函数必须写成函数形式

5.函数指针数组

int add(int ,int);

int sub(int ,int);

int mul(int ,int);

int (*ptr[])(int ,int)={add,sub,mul}; //此为函数指针数组

6.指针的传址调用

函数多个返回值--通过参数列表

int A(int *a,char *c,int x,double b)

7.递归函数

函数自己调用自己

递归函数在栈区,耗内存大

[栈区特点:先进后出,后进先出]

递归函数运行时,在栈区开辟一块内存,运行中所有结果包存在栈区,输出所有结果完成,释放所有内存

数据结构中 树 用递归函数比较多

构造类型

1.定义类型

struct student

{

int num;

char name[34];

int grade;

};

[相当于 int 可以用来定义变量]

2.定义变量

struct student stu1;

3.初始化

struct student stu1={1,"chains",34}

4.赋值

方法一stu1.num=1; strcpy(stu1.name,"abc"); [字符串不可以直接赋值,必须用字符串拷贝函数处理]

方法二stu3=stu2

5.结构体与指针的关系

struct student *p;

p=&stu1;

6.用指针取结构体内参数

方法一 (*p.num;(*p).name;

方法二    p->num; (常用)

7.在堆区创建结构体内存

struct student *ptr=malloc(sizeof(struct student));   //容易出错的地方,总是弄混数据类型 [!!!struct XXXX

8.结构数组

struct student stu[3]={stu[0],stu[1],stu[2]};

stu=&stu[0];stu+1=&stu[1];

stu[1].name == (stu+1)->name

9.初始化

struct student stu[2]={{1,"name",45},{3,"chafde",64}}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章