7.结构体(c和c不同).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.结构体(c和c不同)

2015.3.9 上课内容 一、C与C++ 不同之处 bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节。 声明方式:bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false,注意会发生截断。 const 限定符 (1)、用const给字面常量起个名字(标识符),这个标识符就称为标识符常量;因为标识符常量的声明和使用形式很像变量,所以也称常变量。 定义的一般形式: const 数据类型 常量名=常量值; 数据类型 const 常量名=常量值; 例如: const ?float ?PI=3.14159f; 注意事项: 常变量在定义时必须初始化; 常变量初始化之后,不允许再被赋值; 正如我在这里所说,其实加了关键字const只是提示编译器这个变量是常量,如果我们在接下来的操作中试图更改它,编译器会报错,而并不是真正的常量。 (2)、const 与 #define const定义的常量与#define定义的符号常量的区别: const定义的常量有类型,而#define定义的没有类型,编译可以对前者进行类型安全检查,而后者仅仅只是做简单替换 const定义的常量在编译/运行时确定初值,而#define定义的常量是在预编译时进行替换,不分配内存。 作用域不同,const定义的常变量的作用域为该变量的作用域范围。而#define定义的常量作用域为它的定义点到程序结束,当然也可以在某个地方用#undef取消 #define定义的常量,容易产生副作用: //Effective C++ 3rd的一个例子。 #define CALL_WITH_MAX(a,b) f((a) (b) ? (a) : (b)) int a = 5; int b = 0; CALL_WITH_MAX(++a, b); //a被累加二次 CALL_WITH_MAX(++a, b+10); //a被累加一次 在这里,调用f之前,a的递增次数竟然取决于“它被拿来和谁比较” 此外,定义常量还可以用enum,在c++ 中尽量用const、enum替换#define定义常量,用inline 替换带参数的宏定义;但 #define 在底层编程中是必不可少的,下面举个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #includeiostream using?namespace?std; #define?STR(a)?#a #define?CAT(a,b)?a##b int?main(void) { ????int?xy?=?100; ????cout??STR(ABCD)??endl;?//?#ABCD?=?ABCD ????cout??CAT(x,?y)??endl;?//?x##y?=?xy ????return?0; } 如果是完全的c++ 菜鸟,这里还得稍微解释一下细节,iostream 是c++标准库的一个io流头文件,跟C语言不太一样的是一般没有.h 后缀,using namespace 表示命名空间,简单理解就是统一的函数前缀,类比pthread库如pthread_mutex_init, pthread_mutex_lock 用c++ 方式来表示可能是?pthread::mutex::lock。 cout是输出流对象,操作符在C语言中是左移位运算操作符,在这里被重载成输出操作符,之所以能并列输出是因为如coutxxx 返回的是cout 的引用,以后还会再提。参数宏定义的意义就很清楚了,查看下输出即可。 我们知道printf函数带有可变参数,函数式宏定义也可以带可变参数,同样是在参数列表中用...表示可变参数。例如: ?C++ Code? 1 2 3 4 5 6 #define?showlist(...)?printf(#__VA_ARGS__) #define?report(test,?...)?((test)?printf(#test):\ ????????????????????????????????printf(__VA_ARGS__)) showlist(The?first,?second,?and?third?items.); report(x??y,?x?is?%d?but?y?is?%d,?x,?y); 预处理之后变成:? C++ Code? 1 2 printf(The?first,?second,?and?third?items.); ((x??y)???printf(xy)?:?prin

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档