重拾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是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...
随机推荐
- Gradle多渠道打包[umeng]
前言 国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App! 正文 Umen ...
- 【Python】迭代器、生成器、yield单线程异步并发实现详解
转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从 ...
- java——操作文件
Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...
- C and C++ 如何嵌套使用
1. 要知道extern "C"的含义: (1) extern是C/C++中表明函数和全局变量作用范围的关键字, 该关键字表明其申明的函数和变量可以在本模块或者其他模块中使用. ( ...
- MATLAB mex文件
MATLAB的mex文件是一种特征的函数封装形式,这类函数一般由C/C++语言编写的,经过MATLAB编译器处理而生成的二进制文件.它是可以被MATLAB解释器自动装载并执行的动态链接程序,类似于wi ...
- 学习总结 vs软件简单了解
using System;using System.Collections.Generic;using System.Linq;using System.Text;//调用命名空间 using Sys ...
- linux 关闭系统提示声音
关闭Linux 提示声音: rmmod pcspkr //永久关闭 在/etc/modprobe.d/blacklist文件最后加上 blacklist pcspkr
- JAR包
1, 使用JAR文件 jar文件的全称是Java Archive File,意思就是Java档案文件,通常jar文件是一种压缩文件,与常见的ZIP压缩文件兼容,通常也被称为jar包,j ...
- git大百科
1,命令: git忽略提交文件:git rm --cache .idea/workspace.xml 因为你已经把他加到tracked file里了 用 git rm --cached java/.i ...
- ios frame bounds applicationframe
ios里面的[uiscreen mainscreen]获得的frame是应用的frame大小,不包含status bar,所以高度会少20,但是self.view的frame就是表示整个可视的窗口的大 ...