2022.1.23日记

编程时不能使用TAB键。

相对独立的程序块之间应隔一行。

般情况下,源程序有效注释必须在20%以上。

命名中若有特殊缩写,应有注释。

Add_User这种形式不允许。

#define不能使用数字命名。

函数参数顺序点:函数调用过程中,变量值发生变化的位置(点),称为函数参数“顺序点”。

逗号表达式是有值的。

函数参数求值顺序是从右往左的。

atoi(a[i]):将数字字符串转换为数值。

va_list

递归函数:在函数调用时,直接或间接地自己调用自己的函数称为递归函数。

形式:

  1. 直接调用------直接递归
  2. 间接调用------间接递归

 

 递归条件:

  1. 须有完成函数任务的语句
  2. 一个确定是否能避免递归调用的测试
  3. 一个递归调用语句;该语句的参数应该逐渐逼近结束条件,以致最后断绝递归
  4. 先测试,后递归调用。

1、递归调用不是重新复制该函数,每次调用它时,新的局部变量和形参会在内存中重新分配内存单元,并以新的变量重新开始执行;每次递归返回时,当前调用层的局部变量和形参被释放,并返回上次调用自身的地方继续执行;

2、递归调用一般并不节省内存空间,因为每次调用都要产生组新的局部变量,从而不破坏上层的局部变量;

3、递归调用一般并不能加快程序的执行速度,因为每次调用都要保护上层局部量(现场),而返回时又要恢复上层局部量,占用执行时间;

4、递归函数中,必须有结束递归的条件;

5、递归调用的优点是能实现一些迭代算法难以解决的问题。

1、二叉树的创建、遍历、平衡二叉树实现的代码;

2、哈希表

3、排序方法:二分法、插入法

返回指针值的函数:

格式:类型 *函数名(形参列表)

*函数名两侧不能加括号,由于括号的优先级比*高。首先a与其后参数结合,表明a是函数名,然后与*结合,表明是一个指针形函数。

Int a[3][4];  a[i][j]

a :表示数组名的起始地址

i的地址:a +i*l (l是字节长度)

a[0],a[1],a[2]可看成a[3][4]的关于行的一维数组的数组名

 输入序号列出学生的四门课成绩:

 

函数指针:函数指针是函数的物理入口地址。即是在编译时,分配的物理入口地址。

(可以通过该指针调用函数。)

Int(*p);

int max(int x,int y);

p=max;

取max的值三种形式:max(a,b);p(a,b);(*p)(a,b)

 

函数返回指针注意事项:

局部变量地址不能返回。

解决:

1、全局变量地址

2、动态分配内存空间

3、静态局部变量

函数定义注意点:

  1. 错误返回码
  2. 函数参数的入口参数的检查
  3. 函数规模的控制
  4. 功能单一
  5. 不编写依赖其他内部实现的函数
  6. 函数参数不必过多
  7. 结构体作为函数参数时,尽量使用指针

编写字符串所有操作的函数。不允许调用库函数。

一个指针变量8个字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值