函数

1. 使用库函数时一定要包含#include对应的头文件
2. 在1个工程中,可以有多个.c文件,但是只能有一个main函数
3. 当实参传递给形参时,形参是实参的一份临时拷贝,对形参的修改不能影响实参
4. 想要让形参和实参之间产生联系,必须要将实参的指针传递给形参
5. 当函数想要改变函数外部所定义的变量的值时,需要传变量地址,否则传变量即可。
6. 形参只有在函数调用时才会实例化并分配内存单元,函数调用完形参销毁,因此形参的作用域就是函数内部
7. 传值调用(实参和形参独立)和传址调用(实参和形参关联)
8. 自定义函数时,函数的功能一定要简便单一,高内聚低耦合
9. 数组被当成函数参数时,只会传第1个元素的指针,并不会将整个数组传过去,因此当数组作为函数参数传参时,要额外传递一个参数即数组的长度
10. 关于main函数,main函数实际上时有参数的,int main(int argc, char* argv[], char* envp[])
11. 函数声明和函数定义:声明是告诉编译器函数的返回类型、名字、形参;而定义则是函数的具体内容
12. <>是调用系统提供的.h文件;""是调用自定义的.h文件
13. .c文件存放函数的定义,.h文件存放函数的声明,调用.h文件实际上就是调用函数的声明
14. %d:格式化有符号的int类型,%u:格式化无符号类型的int类型
15. %2d:右对齐2位整数,%-2d:左对齐2位整数

 

 

递归的两个必要条件:
1. 限制条件,当满足这个限制条件的时候,递归便不再继续
2. 每次递归调用之后越来越接近这个限制条件

函数传址利用指针查找下一个数组中的元素:
void arr_str(char* str)
{
  str++;     // 指针++实际上是移动指针类型大小个字节,即str = str + 1(因为char类型是1个字节,内存空间的小单元刚好可以存1个字节)
}
解释:数组传参只会传第一个元素的地址,而数组中元素的存储地址都是相邻的,那么通过:第一个地址(指针变量) = 第一个地址 + 指针类型字节大小 = 第二个地址(第二个元素)

 

 

关于指针:int a = 10; int *p = &a;  *p = *(&a) = a;     相当于*和&抵消了

posted on 2026-06-10 20:13  绝情世家  阅读(7)  评论(0)    收藏  举报