重拾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]的值必须为一空指针。
//回显程序命令行参数
#include <stdio.h>
/****回显程序命令行参数***/
main(int argc, char *argv[]){
/*
int i;
for(i=1; i<argc; i++){
printf("%s%s",argv[i],(i<argc-1) ? " " : "");
}
*/
while(--argc > ){
printf("%s%s", *++argv, (argc > ) ? " " : "");
}
printf("\n");
return ;
}
UNIX系统中的C语言程序有一个公共的约定:以负号开头的参数表示一个可选标志或参数。假定用-x(代表“除...之外”)表示打印所有与模式不匹配的文本行,用-n(代表”行号“)表示打印行号,那么以下命令:
find -x -n 模式 //打印所有与模式不匹配的行,并在每个打印行的前面加上行号
指向函数的指针
int (*comp)(void *, void *) //表明comp是一个指向函数的指针,该函数有两个void *类型的参数,其返回值类型为int
int *f(); //f函数,返回一个指向int类型的指针
int (*pf)(); //pf是一个指向函数的指针,返回int类型的对象
*是一个前缀运算符,其优先级低于(),也低于[]。
这一部分有点走过场了,回头再加强吧。
结构:感觉对象是结构的加强版
struct point{
int x;
int y;
}
关键字struct引入结构声明,后接花括号。struct后面的名字可选,称为结构标记,用于为结构命名。
struct {...} x, y, z; //类似int x, y, z;声明
如果结构声明的后面不带变量表,则不需要为它分配存储空间,仅描述一个结构的模板。
struct point pt; //定义一个struct point类型的变量pt
#include <stdio.h>
main(){
struct point{
int x;
int y;
};
struct point pt1;
pt1.x = ;
pt1.y = ;
struct point pt2 = {, };
printf("%d,%d\n", pt1.x, pt2.y); //100,300
struct rect{
struct point pt1;
struct point pt2;
};
struct rect re1 = {pt1, pt2};
printf("%d\n", re1.pt1.x); //
}
#include <stdio.h>
struct point makepoint(int x, int y); struct point{
int x;
int y;
};
main(){
struct point pt1 = makepoint(, );
printf("%d\n", pt1.x+pt1.y); //
} struct point makepoint(int x, int y){
struct point temp;
temp.x = x;
temp.y = y;
return temp;
}
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,博客园地址:http://www.cnblogs.com/lltong/
重拾C,一天一点点_11的更多相关文章
- 重拾C,一天一点点_2
类型转换一般来说,如果二元运算符的两个操作数具有不同的类型,较低的类型提升为较高类型,结果为较高类型.表达式由float类型的操作数不会自动转换为double类型.使用float类型主要是为了在使用较 ...
- 重拾C,一天一点点
数据类型及长度 char 字符型,占用一个字节 int 整型,通常代表特定机器中整数的自然长度 short 16位 int 16位或32位 ...
- 重拾C
重拾C,一天一点点_10 来博客园今天刚好两年了,两年前开始学编程. 忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多.这两天调试服务器,遇到不少麻烦. 刚出去溜达了一下,晚上 ...
- CSS魔法堂:重拾Border之——更广阔的遐想
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——不仅仅是圆角
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——图片作边框
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——解构Border
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- 重拾Blog
上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...
- [linux]重拾linux
起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...
随机推荐
- 在Yarn上运行spark-shell和spark-sql命令行
转载自:http://lxw1234.com/archives/2015/08/448.htm 如果你已经有一个正常运行的Hadoop Yarn环境,那么只需要下载相应版本的Spark,解压之后做为S ...
- Qt下QWizard改变next,back等默认按钮的大小及背景
默认的按钮又小又丑,想改大点漂亮点. 百度没百出来,最后用google 在这里: http://stackoverflow.com/questions/16425575/change-qwizard- ...
- bochs安装一系列问题
http://blog.chinaunix.net/uid-23817499-id-3418083.html http://www.mouseos.com/os/tools/bochs.html ...
- some tips
1.在使用selenium的时候,需要等待页面加载完成,特别是一些ajax请求,最好使用以下方法(python),通过document.readyState来判断 from selenium.webd ...
- HTTP权威指南----缓存
缓存的处理步骤: 1.接收----缓存从网络中读取抵达的请求报文2.解析----缓存对报文进行解析,提取出URL和各种首部3.查询----缓存查看是否有本地副本可用,如果没有,就获取一份副本(并将其保 ...
- nginx 配置高并发
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...
- Android基础总结(8)——服务
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
- 《App研发录》知识点汇总
原文链接:http://www.jianshu.com/p/fc8c4638937e <App研发录>这部书是包建强写的,说来也巧,在读这边书之前在看池建强的<Mac 人生元编程&g ...
- 【EF 3】浅谈ADO数据模型生成串(一):csdl,ssdl,msl分析
导读:这段经历,真的是难以忘怀.恨得我牙痒痒,就一个字符串拼接,前前后后尽然报了不下30个错.有的错很快就能调出来,有的错调一天.两天,是真的可以的.最终总结了一下,这些错很大一部分原因是对于EF生成 ...
- pycurl
http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2344005.html http://ju.outofmemory.cn/entry/ ...