C语言学习笔记2

---摘要:C语言学习个人向记录-输入输出验证---

函数

函数原型

以前的C对于函数参数规定的不细,你可以不标形参类型,容易造成混乱

有时候我们可以这么来用,小函数写在前面

1
2
3
4
5
6
//既是函数定义,也是函数原型
int imax(int a,int b){return a>b?a:b;}
int main(viod)
{
something;//主函数
}

递归recurion

递归没有循环效率高,但胜在简洁

来个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* recur.c ---循环示例 */
#include<stdio.h>
void up_and_down(int n);
int main(void)
{
up_and_down(1);
return 0;
}
void up_and_down(int n)
{
printf("Level %d : n location %p\n",n,&n);
if(n<4)
{
up_and_down(n+1);
}
printf("LEVEL %d : n location %p\n",n,&n);
}

//输出结果
Level 1 : n location 000000000061FE00
Level 2 : n location 000000000061FDD0
Level 3 : n location 000000000061FDA0
Level 4 : n location 000000000061FD70
LEVEL 4 : n location 000000000061FD70
LEVEL 3 : n location 000000000061FDA0
LEVEL 2 : n location 000000000061FDD0
LEVEL 1 : n location 000000000061FE00

可以看出,在相反顺序任务中这样的调用后语句很有用

编译多源代码文件的程序

vsc支持似乎不太好,暂时不研究了

指针 pointer &与*

&:指向某指针
*:解指向运算

1
2
ptr=&bah;//将ptr“指向”bah
val=*ptr;//将ptr“指向”地址的值提取出来

声明指针:int * pi ;

指针:&pi

解指针:*ppi