c语言花式填坑
本帖最后由 威斯布鲁特 于 2017-7-6 11:56 编辑再次学习数据结构,发现自己很多c语言基础仍然为过关,比如递归,存储类别、链接和内存管理等等,所以特开此贴填坑。 本帖最后由 威斯布鲁特 于 2017-7-11 15:16 编辑
int main(int argc, char *argv[])
argc是命令行总的参数个数
argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数
是命令行后面跟的用户输入的参数
argc(argument count):参数计数;argv(argument value):表示参数值。
思考:
c primer plus 6中第415页的程序,为什么会直接输出,没有读取命令行参数?
因为带命令行参数的c语言程序,需将其windows系统环境变量:“C:\Windows\System32”。然后想执行cmd命令一样调用。
本帖最后由 威斯布鲁特 于 2017-7-6 12:25 编辑
#include<stdlib.h>
stdlib 头文件即standard library标准库头文件
stdlib 头文件里包含了C、C++语言的最常用的系统函数
stdlib头文件中声明的eixt函数和一些宏
exit()函数关闭所有打开的文件并结束程序,并转递参数给一些操作系统。
正常结束的程序转递0,异常结束的程序转递非零值。
由于不是所有的操作系统都能识别相同范围内的返回值。因为,c标准规定了一个最小的限制范围。
标准要求0或宏EXIT_SUCCESS用于表明成功结束程序,宏EXIT_FAILURE用于表明结束程序失败。
在最初的调用中main()中使用return与调用exit效果相同。
return 和exit()的区别:
1.如果main()在一个递归程序中,exit()仍然会终止程序,return只会把控制权交给上一次递归。
2.在其他函数中(除main()以外)调用exit()也能结束整个程序。 本帖最后由 威斯布鲁特 于 2017-7-11 14:48 编辑
递归(recurison):c允许函数调用自己,这种调用方式成为递归(recurison)。
示例程序:
#include <stdio.h>
#include <stdlib.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);//#1
if (n<4)
up_and_down(n+1);
printf("Level %d: n location %p\n", n, &n);//#2
}
Windows10输出结果如下:
首先mian()调用了带参数1的up_and_down(),执行结果是up_and_down()中的形式参数n的值是1,所以打印#1 打印Level 1。由于n<4,up_and_down()(第一级)调用实际参数为n+1(或2)的up_and_down()(第2级)。于是第二级调用中n的值是2,打印语句#1 打印级别2.
当执行到第四级时,up_and_down()函数不再调用自己。第4级调用接着执行打印语句#2,即打印LEVEL 4,因为n的值是4.此时,第4级调用结束,控制被传回它的主调函数(即第3级调用)。在第3级调用中,执行的最后一条语句是调用if语句的第4级调用。被调函数(即第4级调用)把控制返回在这个位置,因此,第3级调用继续执行后面的代码,打印语句#2 打印LEVEL 3.
从程序输出的地址值可以看出,每级递归的变量n都属于本级递归所有。
页:
[1]