形参实例化之后其实相当于实参的一份临时拷贝,改变形参不能够改变实参
int main()
{
printf("%d", printf("%d", printf("%d", 43)));//打印结果是4321,因为printf的返回值是打印在屏幕上字符的个数。
return 0;
}
add.h的内容
#ifndef __Add_H__ #define __Add_H__ //函数的声明 int Add(int x, int y); #endif
add.c的内容
#include "Add.h" //函数Add的实现 int Add(int x, int y) { return x+y; }
函数递归的两个必要条件:
存在限制条件,当满足这个限制条件的时候,递归便不再继续;
每次递归调用之后越来越接近这个限制条件
采用递归实现接受一个整型值(无符号),按照顺序打印它的每一位
void print(num) { if (num > 9) { print(num / 10); } printf("%d", num % 10);//该行代码如何打比较困难,可以先假设第一次我们进入print(num/10)这个循环的时候实现了打印123;所以改行代码需要实现打印4 } int main() { int num=1234; print(num); return 0; }
递归编写一个函数reverse_string(char* string)
reverse_string1(char* string) { char tmp = *string; int len = strlen(string); *string = *(string + len - 1); *(string + len - 1) = '\0'; if (strlen(string + 1) > 1) { reverse_string(string + 1); } *(string + len - 1) = tmp; } reverse_string2(char* string) { if ((*(string + 1) != '\0')) { char* tmp = string + 1; reverse_string2(tmp); } printf("%c", *string);//之前*string的*忘记写了,导致每次结果都不一样 }
求斐波那契数
递归方法
int fib1(int n) { if (n <= 2) return 1; else return fib1(n - 1) + fib1(n - 2); }
传统方法
int fib2(int n) { int result; int pre_result; int next_old_rsule; result = pre_result = 1; while (n > 2) { n -= 1; next_old_rsule = pre_result; pre_result = result; result = next_old_rsule + pre_result; } return result; }
静态库的使用
1、xxx.c属性页->配置属性->常规->配置类型:选择静态库
2、生成静态库xxx.lib文件
3、将xxx.h和xxx.lib放到目标.c文件的路径下
//目标.文件 #inlcude"xxx.h" #pragma conmment(lib,"xxx.lib")//加载头文件和静态库
传地址返回才能改变实参,还有一个办法就是采用全局变量,全局变量具有通性功能,func1()和func2() 都可以使用全局变量func1()对全局变量的修改,func2()也可以看到其修改