重拾C,一天一点点_11

命令行参数

在支持C语言的环境中,可以在程序开始执行时将命令行参数传递给程序。

调用主函数main时,它带有两个参数,第一个参数(argc,用于参数计数)的值表示运行程序时命令行参数的数目;第二个参数(argv用于参数向量)是一个指向字符串数组的指针,其中每个字符串对应一个参数。

  echo hello, world    //命令行中各参数间以空格隔开,hello,算一个参数

按照C语言的约定,argv[0]的值是启动该程序的程序名,因此argc的值至少为1.如果argc为1,则说明程序名后面没有命令行参数。argv[0]、argv[1]和argv[2]分别对应”echo”、”hello,”、”world”。最后一个可选参数为argv[argc-1]。ANSI标准要求argv[argc]的值必须为一空指针。

//回显程序命令行参数

1 #include <stdio.h> main(int argc, char *argv[]){ int i; 6 for(i=1; i<argc; i++){ 7 printf(“%s%s”,argv[i],(i<argc-1) ? ” ” : “”); 8 }(–argc > 0){, *++argv, (argc > 1) ? ” ” : “”);12 });;15 }

UNIX系统中的C语言程序有一个公共的约定:以负号开头的参数表示一个可选标志或参数。假定用-x(代表“除…之外”)表示打印所有与模式不匹配的文本行,用-n(代表”行号“)表示打印行号,,那么以下命令:

  find -x -n 模式    //打印所有与模式不匹配的行,并在每个打印行的前面加上行号指向函数的指针

  int (*comp)(void *, void *)  //表明comp是一个指向函数的指针,该函数有两个void *类型的参数,其返回值类型为int

  int *f();          //f函数,返回一个指向int类型的指针

  int (*pf)();         //pf是一个指向函数的指针,返回int类型的对象

*是一个前缀运算符,其优先级低于(),也低于[]。

这一部分有点走过场了,回头再加强吧。

结构:感觉对象是结构的加强版

1 struct point{2int x;3int y;4 }

关键字struct引入结构声明,后接花括号。struct后面的名字可选,称为结构标记,用于为结构命名。

struct {…} x, y, z;    //类似int x, y, z;声明

如果结构声明的后面不带变量表,则不需要为它分配存储空间,仅描述一个结构的模板。

struct point pt;  //定义一个struct point类型的变量pt

1 #include <stdio.h> 2 3 main(){ 4struct point{ 5int x; 6int y; 7 }; 8struct point pt1; 9pt1.x = 100;10pt1.y = 150;11struct point pt2 = {200, 300}; , pt1.x, pt2.y); rect{15struct point pt1;16struct point pt2;17 };18struct rect re1 = {pt1, pt2};, re1.pt1.x);}

1 #include <stdio.h> 2 struct point makepoint(int x, int y); point{ 5int x; 6int y; 7 }; 8 main(){ 9struct point pt1 = makepoint(100, 200);, pt1.x+pt1.y);}point makepoint(int x, int y){14struct point temp;15temp.x = x;16temp.y = y;17return temp;18 }

struct point *pp;    //定义一个指向struct point类型对象的指针。(*pp).x此处的圆括号不可省略,因为结构成员运算符“.”的优先级比“*”高。

结构指针使用频度高,为方便,可简写如下:

  p->结构成员    //p是一个指向结构的指针,有点类似$this->name

运算符.和->是从左至右结合的:  r.pt1.x <=> rp->pt1.x

附:

1.、老师给全班60个学生布置了两道作业题,其中做对第一题的有31人,做对第二题的有40人,另有4人都做错了,请问两道题都做对的有几个人?

  小学的题目,刚才自己看了这题感觉到有点绕了,呵呵,记得以前做这种题目还是很厉害的,想当年了。

2、毕业了,寝室的5个人需要分书架,一共有3个一模一样的书架,把这三个书架分给3个人,然后分到书架的三个人各拿出1000元,平均分给其余两人。这样一分,大家都觉得挺合理的。事后,其中一人算了半天也不知道到底一个书架是多少钱,你能告诉他吗?

原文作者:lltong,博客园地址:

以诚感人者,人亦诚而应。

重拾C,一天一点点_11

相关文章:

你感兴趣的文章:

标签云: