美文网首页C++11新特性程序员
C++11新特性(12)-使用auto表示多维数组指针

C++11新特性(12)-使用auto表示多维数组指针

作者: 面向对象思考 | 来源:发表于2018-06-09 13:01 被阅读3次

多维数组的指针

多维数组是一种常见的数据结构,实际上是数组的数组。这个含义虽然很好理解,但是在定义操作数组数据的指针时却有点麻烦。假设有下面的二维数组。

int matrix[10][10];

定义指向其中一行的指针时,下面那种方式是对的呢?

int *row[10];

int (*row)[10];

答案是第二种。这里硬记当然是一种办法,但是也可以用换一个方式看代码:

int*   row[10];

int   (*row)[10];

第一种情况是指针的数组,剩下的就是数组的指针了。

C++11的处理方式

C++11以后,有了auto描述符,有了begin/end函数,定义多维数组指针时就可以容易一些了,例如可以这样写代码:

int matrix[10][10];

int number = 1;

for(auto row = begin(matrix); row != end(matrix); ++row)

 {

       for(auto data = begin(*row); data != end(*row); ++data){

           *data = number++;

       }

 }

因为row是数组指针,而begin和end的要求的是引用类型,所以在调用begin和end函数取得数据指针时使用的参数是*row,而不是row。

除此之外,都很自然。

作者观点

今天说明的与其说是新内容,还不如说是之前内容的一个综合练习。

觉得本文有帮助?请分享给更多人。

关注【面向对象思考】,轻松学习每一天!

面向对象设计,面向对象编程,面向对象思考!

相关文章

  • C++11新特性(12)-使用auto表示多维数组指针

    多维数组的指针 多维数组是一种常见的数据结构,实际上是数组的数组。这个含义虽然很好理解,但是在定义操作数组数据的指...

  • C++11的类型推导详解

    auto & decltype 关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decl...

  • 阿里巴巴面试题基础篇 C++11

    ● 请问C++11有哪些新特性? 参考回答: C++11 最常用的新特性如下: auto关键字:编译器可以根据初始...

  • Lambda表达式

    Lambda表达式是C++11的新特性,是一种匿名函数,一般用于小型的函数,比如: 上面是使用函数指针输出一个数组...

  • 二级指针

    二级指针做函数输出特性 指针数组的使用 一维数组

  • C++关键字和符号详解

    很多用法还没接触到,因此本文持续更新 1 .和::和:和-> 辨析 2.auto (C++11新特性) 自动...

  • 指针与数组(2)

    本章主要整理归纳指针数组、数组指针、数组下标、多维数组的概念 链接上回:指针与数组(1) 上一回,提到了指针变量i...

  • 【Effective Modern C++】索引

    本书讲述了C++11/14新特性的用法和原理。1. 类型推断01 理解模板类型推断02 理解auto类型推断03 ...

  • TS学习笔记(5)-多维数组

    多维数组的使用 ========= 知识点 多维数组的定义方法 多维数组的使用方法 代码

  • cppinsights 编译安装

    cppinsights 是一款C++源代码到源代码的转换,它可以把C++中的模板、auto以及C++11新特性展开...

网友评论

    本文标题:C++11新特性(12)-使用auto表示多维数组指针

    本文链接:https://www.haomeiwen.com/subject/gteteftx.html