C语言 命令行参数 函数指针 gdb调试

来源:互联网 发布:软件著作权 受理登记 编辑:程序博客网 时间:2024/04/30 16:35

1. C语言命令行参数详解


命令行参数 : 有两个参数 int argc 和 char **argv;

-- argc : 标示输入的参数个数, 注意命令本身也是参数;

-- argv : 指向 字符串数组的指针, 每个字符串是一个参数;

-- 约定 : argv[0] 是 程序名称, argc 的最小值是1, 如果argc 是1, 那么说明 命令后面没有参数;


(1) 模仿 echo 程序 示例


echo程序示例 : 

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. octopus@octopus-Vostro-270s:~/code/c/pointer$ echo csdn  
  2. csdn  
  3. octopus@octopus-Vostro-270s:~/code/c/pointer$ echo Hello World  
  4. Hello World  
-- 分析命令行 : echo Hello World 将 Hello World 输出到命令行中, 该命令 argc 值是3, argv[0] 是 echo, argv[1] 是 Hello, argv[2] 是 World, 注意 argv[3] 是 空指针 0;


使用数组下标方式访问参数模仿echo示例程序 : 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /************************************************************************* 
  2.     > File Name: echo.c 
  3.     > Author: octopus 
  4.     > Mail: octopus_work.163.com  
  5.     > Created Time: 2014年03月19日 星期三 19时56分36秒 
  6.  ************************************************************************/  
  7.   
  8. #include<stdio.h>  
  9.   
  10. int main(int argc, char **argv)  
  11. {  
  12.     int i;  
  13.     for(i = 1; i < argc; i ++)  
  14.     {  
  15.         //将参数输出, 每次注意输出一个空格, 如果是最后一个那就不用输出空格了  
  16.         printf("%s%s", argv[i], (i < argc - 1) ? " " : "");  
  17.     }  
  18.     printf("\n");  
  19.     return 0;  
  20. }  


执行效果 : 

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. octopus@octopus-Vostro-270s:~/code/c/pointer$ ./echo Hello World  
  2. Hello World  


使用指针访问参数模仿echo程序 : 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /************************************************************************* 
  2.     > File Name: echo_pointer.c 
  3.     > Author: octopus 
  4.     > Mail: octopus_work.163.com  
  5.     > Created Time: 2014年03月19日 星期三 20时08分07秒 
  6.  ************************************************************************/  
  7.   
  8. #include<stdio.h>  
  9.   
  10. /* 
  11.  * echo Hello World 
  12.  * 循环条件 : --argc, 如果参数只有一个 echo 那么什么都不用打印 
  13.  * 打印参数个数 : 如果参数有 3 个, 那就循环 2 次, 打印两个参数 
  14.  * 打印参数 : 从 第 2 个参数开始打印 
  15.  * 打印空格 : 如果argc > 1, 说明下一轮还要继续打印, 此时打印空格 
  16.  */  
  17. int main(int argc, char **argv)  
  18. {  
  19.     while(--argc > 0)  
  20.         printf("%s%s", *++argv, (argc > 1) ? " " : "");  
  21.     printf("\n");  
  22.     return 0;  
  23. }  

执行结果 : 

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. octopus@octopus-Vostro-270s:~/code/c/pointer$ gcc echo_pointer.c -o echo  
  2. octopus@octopus-Vostro-270s:~/code/c/pointer$ ./echo Hello World
0 0