C语言基本知识3

一、编程规范
软件编程规范作用
增强程序可读性
增强代码复用性
增强代码维护性
软件编程规范总则:
排版
注释
标识符命名

二、函数参数顺序点
函数调用过程中,变量值发生变化的位置(点),称为函数参数“顺序点”。
顺序点一般位于:
(1)语句结束时值改变:
k=2;
k=k++ + k++;
(2)&& || , ?:等运算符
(3)函数参数传递时的求值顺序
int k = 1;
func(k,k++);
例如: int i = 0;
① printf(“%d,%d,%d”,i++,i++,i++);
②printf(“%d,%d,%d,%d,%d”, ++i, ++i,i++,++i,i++);
Linux下,从右往左计算。①顺序输出2,1,0 ②顺序输出5,5,2,5,0

三、带参数的main函数和命令行参数
原理:当系统调用主函数时,系统也可将参数 (命令行) 传给主函数。
格式:main(int argc, char *argv[ ])

可变参数列表
#include<stdarg.h>中定义了相关方法。
typedef struct
{char *ao;
int offset;
}va_list;
控制函数:
void va_start(va_list ap,last);
type va_arg(va_list ap,type);
void va_end(va_list ap);
void va_copy(va_list dest,va_list src);
调用参数表以前,定义一个va_list类型变量,对ap进行初始化,初始化完成后,ap指向可变参数表中的第一个参数(由va_start函数实现),获取参数,调用va_arg函数,第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把ap的位置指向列表的下一个变量位置,获取了所有的参数后,要关闭ap,调用va_end函数即可。

四、递归函数
在函数调用时,直接或间接地自己调用自己的函数称为递归函数
递归调用过程可以分为如下的两个阶段:
第一阶段称为“递推”阶段:
将原有的问题分解为新的子问题,逐渐以未知的向已知的方向推测,最终达到已知的条件,即递归结束条件,这时递归阶段结束;
第二阶段称为“回归”阶段:
该阶段从已知的条件出发,按照“递推”的逆过程,逐一求值返回,最后到达递推的开始处,结束回归阶段,完成递归调用。

返回指针值的函数
格式:类型 *函数名(形参列表)
举例 int *a(int x, int y)
*函数名两侧不能加括号,由于括号的优先级比*高。首先 a 与其后参数结合,表明 a 是函数名,然后与*结合,表明是一个指针形函数。

函数的指针
函数指针是函数的物理入口地址。即是在编译时,分配的物理入口地址。
不带括号和参数的函数名代表函数的入口地址。
对指向函数的指针变量,像p+n ,p++,p- -等运算是无意义的。函数指针不能指向函数中的某条指令。

函数返回指针的注意事项
1、局部变量地址不能返回:
解决方法:
(1)全局变量地址
(2)动态分配内存空间
(3)静态局部变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值