【24.1.17笔记】C++ Primer 自学 Day13

三、C++数据类型

11、复数类型

        使用复数类型必须要包含头文件:

#include <complex>

        定义复数类型:

complex< double > purei( 0, 7 ); // 0+7i
complex< float > real_num( 3 );  // 3+0i
complex< long double > zero;  // 0+0i
complex< double > purei2( purei );  // 0+7i

complex< double > conjugate[ 2 ] = { 
 complex< double >( 2, 3 ), 
 complex< double >( 2, -3 ) 
}; // 复数数组

complex< double > *ptr = &conjugate[0]; // 复数指针 
complex< double > &ref = *ptr;  // 复数引用

12、typedef名字

        typedef用来给类型名称起一个别名,这样我们在使用的时候,会更加方便或者更容易记。

typedef double wages; // 我们定义了一种叫wages的类型,其实就是double
wages hourly, weekly; // double hourly, weekly;

        使用typedef名字后,我们并没有引入一种新的类型,而是为现有的类型引入了一个助记符号,在一些情况下,它能够降低声明的复杂性。

        【typedef不是简单的字符串替换!】简单记住,遇到const的时候,typedef并不能简单展开,const和typedef后的名字同时修饰变量。下面的例子里面,cstring和const同时修饰变量cstr,所以应该是个指针常量而不是常量指针,如果简单展开的话就是常量指针了。

typedef char *cstring;
extern const cstring cstr;
char *const cstr;

        如果使用了#define,那么就是常量指针!

#define char * cstring
extern const cstring cstr;
const char *cstr

13、volatile限定修饰符

        volatile限定修饰符能够阻止编译器控制或监测之外的改变,例如系统时钟更新的变量。

        volatile用法:其实和const差不多,就是在声明前面告诉编辑器,这个对象值可能在编辑器监测外改变,然后不让它改变。

volatile int display_register; 
volatile Task *curr_task; 
volatile int ixa[ max_size ]; 
volatile Screen bitmap_buf;

        举个例子:【在使用volatile之前,如果我们不改变一个变量的值,那么编译器为了节省汇编语言或是空间,它会直接把变量优化成一个常量来看,这样可能能缩短汇编语言的长度【中间可能省略一些条件代码】。但是加上 了volatile之后,那么编译器不会耍聪明,就还是会老老实实把程序翻译成汇编语言,该怎么访问内存就怎么访问内存。】

        但是对于具体的使用场景,还是没能理解,等以后看到项目中代码再重新回头理解。

14、pair类型

        使用pair类型必须包含头文件:

#include <utility>

        pair的作用就是把不同类型的两个值关联起来【让我想到了哈希表hh】。

        pair的使用方法:

pair< string, string > author( "James", "Joyce" );

        访问方式:

 author.first //访问第一个元素

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值