1.typedef

typedef一般是对某种类型的类型别名(不是变量别名)

typedef double db;void mixtypename()
{db d=1.2;cout<<d<<endl;
}

db就是double的别名,一般情况下,使用typedef一般可以认为是类型别名的替换

但是也有例外

typedef char * ps;
void mixtypenameexcept()
{char a='s';char b='a';const ps cstr=&a;cstr=&b;
}

当编译这段代码时,会报错

这说明cstr是const指针,而不是指向const变量的指针

也就是说

const ps cstr等价于char *const cstr
const ps cstr不等价于const char *cstr

2.static_cast

static_cast用来强迫隐式转换。那么经常出现的隐式转换有哪些?1、用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。2、指针或引用之间的转换,比如 void*转为float*,或者将base*转为derived*。3、将非const对象转为const对象。

void mixtypecast()
{double d=3.14;int i=static_cast<int>(d);void *vp=&i;int *pi=static_cast<int *>(vp);cout<<i<<endl<<*pi<<endl;
}

int i=10;
const double d=static_cast<double>(i);
base *pb=new base();
derive *pd=new derive();
base *pb2=static_cast<base*>(pd);
derive *pd2=static_cast<derive*>(pb);//not safe
base b;
base &rb=b;
derive &rd=static_cast<derive&>(rb);//not safe

上述代码中的L6、9发生了向下转化,是不安全的(因为编译期的类型转换有可能会在运行时出现错误,特别是类对象的指针或引用),所以就有了dynamic_cast,dynamic_cast见https://blog.csdn.net/Master_Cui/article/details/110520918

3.const_cast

const_cast通常被用来将对象的底层const属性。所以,const_cast一般用于const对象引用和const对象的指针,但是不能用于const对象

示例

void mixremoveconst()
{const int &a=10;int &b=const_cast<int &>(a);const int *pa=&a;int *p=const_cast<int *>(pa); cout<<p<<endl<<b<<endl;
}

示例2

const int cb=20;
int b=const_cast<int>(cb);

cb中的const是顶层const,所以不能用const_cast来强转,否则会出现如下错误(提示被转换的表达式不是指针也不是引用)

4.一次循环遍历二维数组

void twodimarray()
{int a[3][4]={1,2,3,4,5};for (int i=0;i<3*4;++i) {cout<<a[i/4][i%3]<<endl;}
}

行下表为数组元素索引除列数,列下表为数组元素索引对行求余

5.聚合类

聚合类的特点:1.所有成员都是public。2.没有定义任何构造函数,全有编译器自动生成。3.没有基类。4.没有类内初始化

可以使用列表初始化对聚合类进行初始化,成员初始化的顺序必须和成员的定义顺序一致

class agg
{
public:int a;string str;
};int main(int argc, char const *argv[])
{agg t={10,"qwe"};cout<<t.a<<t.str<<endl;return 0;
}

上述代码中的10和qwe的位置不能颠倒

参考:

《C++ Primer》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

C++知识点杂记1——typedef、static_cast、const_cast、遍历二维数组、聚合类相关推荐

  1. 二维数组更改vue_使用vue中的v-for遍历二维数组的方法

    如下所示: {{itemss}} 其中,data数据为: this.data = [ [ { type: '', name: '资产', start: '期末余额', end: '期初余额' }, { ...

  2. 遍历二维数组_Java编程基础阶段笔记 day06 二维数组

    二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...

  3. 微信小程序遍历二维数组

    在微信小程序中遍历二维数组,代码如下 data 中二维数组结构如下 data: {familys:[{familyName:'贾家', users: [{name:'贾宝玉'},{name:'贾元春' ...

  4. 如何创建二维数组 微信小程序_微信小程序遍历二维数组

    在微信小程序中遍历二维数组,代码如下 data 中二维数组结构如下 data: { familys:[ { familyName:'贾家', users: [ {name:'贾宝玉'}, {name: ...

  5. c语言二维数组行优先如何访问快,C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why?...

    C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why? 简单粗暴的答案:存在Cache机制! 稍微啰嗦一点:CPU访问内存(读/写,遍历数组的话主要是读) ...

  6. python中遍历二维数组_python遍历二维数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 二 维 数组 5.2.1 二 ...

  7. 漫画:如何螺旋遍历二维数组?

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui)  第二天   什么意思呢?我们来举个例子,给定下面这样一个二维数组: 我们需要从左上角的元素1开始,按照顺时针进行螺 ...

  8. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量

    在图像的采集中,常常需要用到二维数组,这里数组的遍历是指按照一定的顺序访问数组中所有的元素. 在众多的遍历方法中,下标法和指针法是两种常用的方法.但在使用的时候,我们只需要选择其中的一种,那么如何选择 ...

  9. c++ 二维数组_C|数形结合理解数组指针、指针数组、一级指针来遍历二维数组

    二维数组本质是也是线性存储的一维数组,各元素都是相对于基地址(首地址)的偏移,只是逻辑上的维度区分而已.或者可以理解为数组的数组,也就是说,n维数组的元素是一个n-1维数组. 需要注意的是,多维数组名 ...

最新文章

  1. 使用Html5+C#+微信 开发移动端游戏详细教程 总目录
  2. TensorFlow 官方文档中文版发布啦(持续维护)
  3. java----八种排序算法
  4. MySQL中in(常量列表)的执行计划
  5. Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】
  6. SSH登录太慢(等很久才提示输入密码)的问题
  7. 【插件介绍】Lombok
  8. LiteOS内核源码分析:消息队列Queue
  9. 为什么数据可视化很重要
  10. 人脸检测(十)--强分类器源码分析
  11. C语言实现数据结构——单链表
  12. 一页纸项目管理及模板下载
  13. 怎么调试Delphi源码
  14. cpda项目数据分析师与cda数据分析师的区别?不建议考CPDA
  15. Thinkpad R60 驱动下载及安装方法 for windows XP
  16. python opencv 获取图片清晰度
  17. 怎么在搜索计算机学报的论文,计算机学报-模式搜索法
  18. Android 出海 Admob 踩坑
  19. 【DNSPOD】利用DNSPod实现动态域名解析【DDNS】
  20. 网站服务器进不去可以加速进去吗,让网页打开加速的方法

热门文章

  1. JFinal整合Shiro(二)
  2. Block介绍(二)内存管理与其他特性
  3. 验证视图MAC失败 Validation of ViewState MAC Failed
  4. 零基础Java学习之包(Package)
  5. ZooKeeper配置中出现Error contacting service. It is probably not running
  6. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结
  7. flask第十篇——url_for【3】
  8. zk如何实现watch
  9. 机器学习基石(6)--Theory of Generalization
  10. 欺诈网站都注重用户体验!你,还在等什么?!