《C++ Primer》读书笔记(7.8,7.9)
2013-06-08 11:38
155 查看
main()处理命令行选项
通常 在执行程序时 我们会传递命令行选项 例如 我们可能写如下命令行
如果用户已在命令行中指定了选项的话 那么我们可以通过main()函数的一种扩展原型特征来访问这些选项
argc 包含命令行选项的个数 argv 包含aygc 个C 风格字符串 代表了由空格分隔的命令选项 例如 对于如下命令行
argc 被设置为5 且argv 被设置为下列C 风格字符串
指向函数的指针
假定我们被要求提供一个如下形式的排序函数
如下格式
我们知道,不带下标操作符的数组名会被解释成指向首元素的指针。当一个函数名没有被调用操作符修饰时,会被解释成指向该类型函数的指针。例如,表达式
被解释成类型
将取地址操作符作用在函数名上也能产生指向该函数类型的指针。因此 lexicoCompare和&lexioCompare 类型相同 指向函数的指针可如下被初始化
调用
pf( ia, iaSize );
也可以用显式的指针符号写出
(*pf)( ia, iaSize );
函数指针的数组
我们可以声明一个函数指针的数组 例如
函数参数的类型不能是函数类型,函数类型的参数将被自动转换成该函数类型的指针
例如
通常 在执行程序时 我们会传递命令行选项 例如 我们可能写如下命令行
prog -d -o ofile data0
如果用户已在命令行中指定了选项的话 那么我们可以通过main()函数的一种扩展原型特征来访问这些选项
int main( int argc, char *argv[] ) { ... }
argc 包含命令行选项的个数 argv 包含aygc 个C 风格字符串 代表了由空格分隔的命令选项 例如 对于如下命令行
prog -d -o ofile data0
argc 被设置为5 且argv 被设置为下列C 风格字符串
argv[ 0 ] = "prog"; argv[ 1 ] = "-d"; argv[ 2 ] = "-o"; argv[ 3 ] = "ofile"; argv[ 4 ] = "data0";=================外链帮助理解=============== http://bbs.csdn.net/topics/390037804
指向函数的指针
假定我们被要求提供一个如下形式的排序函数
sort( start, end, compare );
如下格式
int (*pf)( const string &, const string & ); // ok: 正确这个语句声明了pf 是一个指向函数的指针,该函数有两个参数和int 型的返回值,即指向函数的指针
我们知道,不带下标操作符的数组名会被解释成指向首元素的指针。当一个函数名没有被调用操作符修饰时,会被解释成指向该类型函数的指针。例如,表达式
lexicoCompare;
被解释成类型
int (*)( const string &, const string & );的指针
将取地址操作符作用在函数名上也能产生指向该函数类型的指针。因此 lexicoCompare和&lexioCompare 类型相同 指向函数的指针可如下被初始化
int (*pfi)( const string &, const string & ) = lexicoCompare; int (*pfi2)( const string &, const string & ) = &lexicoCompare;
调用
pf( ia, iaSize );
也可以用显式的指针符号写出
(*pf)( ia, iaSize );
函数指针的数组
我们可以声明一个函数指针的数组 例如
int (*testCases[10])();使用typedef 名字可以使声明更为易读 例如
// typedefs使声明更易读 typedef int (*PFV)(); // 定义函数类型指针的 typedef PFV testCases[10];testCases 的这个声明与前面的等价
函数参数的类型不能是函数类型,函数类型的参数将被自动转换成该函数类型的指针
例如
// typedef 表示一个函数类型 typedef int functype( const string &, const string & ); void sort( string *, string *, functype );编译器把sort()当作已经声明为
void sort( string *, string *, int (*)( const string &, const string & ) );上面这两个sort()的声明是等价的
相关文章推荐
- 读书笔记-现代操作系统-7多媒体操作系统-7.8 高速缓存7.9多媒体磁盘调度
- c++ primer 读书笔记 之第七章类
- C++ Primer 读书笔记 – 第五章
- 读书笔记:C++ Primer系列(11)—— 表达式
- 《C++ Primer》第三版和《设计模式》读书笔记
- C++ primer 读书笔记(5)
- C++ primer 读书笔记系列——(6)顺序容器(二)
- 《C++ Primer》读书笔记第六章-2-返回类型 And 函数重载
- 读书笔记:C++ primer 5th edition--chapter13.拷贝控制
- 《c++ primer》读书笔记3
- 《C++ Primer》读书笔记-第一章 入门
- 《C++ Primer》读书笔记-第三章 05 数组
- 《C++ Primer 4th》读书笔记 第9章-顺序容器
- 读书笔记-C++ Primer 7.3 Returning a Reference
- C++ Primer 读书笔记 - 第八章
- 《C++ Primer》读书笔记第十五章-2-虚函数、继承中的类作用域
- 《C++ Primer》读书笔记之第15章:面向对象编程
- 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装
- C++ Primer 读书笔记 第1章
- C++ Primer 3rd 读书笔记