c/c++ 多维数组和指针

知识点

1,初始化多维数组,对应代码里的test1

2,遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型,对应代码里的test2

3,指针和多维数组 ,对应代码里的test3

#include <iostream>

using namespace std;

int main(){
//test1 初始化多维数组
/*
int ia[3][4] = {
{0,1,2,3},
{4,5,6,7},
{8,9,10,11}
};
//ia2和ia完全相同
int ia2[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
//只初始化每行的首元素,其他元素为默认值
int ia3[3][4] = {{1},{4},{8}};
int ia4[2][3][4] = {1};
//用ia4的首元素为ia最后一行最后一列的最后一个元素赋值
ia[2][3] = ia4[0][0][0];
//把row绑定到ia的第二行上
int (&row)[4] = ia[2];
for(auto s : row){
cout << s << ",";
}
cout << endl;
*/ //test2 遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型
/*
constexpr size_t rowCnt = 3,colCnt = 4;
int ia[3][4] = {
{0,1,2,3},
{4,5,6,7},
{8,9,10,11}
};
for(size_t i = 0; i < rowCnt; ++i){
for(size_t j = 0; j < colCnt; ++j){
cout << ia[i][j] << ",";
}
cout << endl;
}
//除了最内层循环外,其他所有层都必须是引用类型
for(auto &row : ia){
for(auto &col : row){
cout << col << ",";
}
cout << endl;
}
*/ //test3 指针和多维数组
int ia[3][4] = {
{0,1,2,3},
{4,5,6,7},
{8,9,10,11}
};
//普通遍历
for(auto p = ia; p != ia + 3; ++p){
for(auto q = *p; q != *p + 4; ++q){
cout << *q << ",";
}
cout << endl;
}
//利用库函数begin和end
for(auto p = std::begin(ia); p != std::end(ia); ++p){
for(auto q = std::begin(*p); q != std::end(*p); ++q){
cout << *q << ",";
}
cout << endl;
}
//利用别名
using iar = int[4];
for(iar* p = ia; p != ia + 3; ++p){
for(int* q = *p; q != *p + 4;++q){
cout << *q << ",";
}
cout << endl;
}
}

c/c++ 学习互助QQ群:877684258

本人微信:xiaoshitou5854

c/c++ 多维数组和指针的更多相关文章

  1. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  2. C语言--指向多维数组的指针和指针数组

    #include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...

  3. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  4. c语言中双维数组与指针的那点事儿

    说起c语言的指针,估计对c语言只是一知半解的同志们可能都会很头疼,尤其它跟数组又无耻的联系到一起的时候,就更加淫荡了!!! 怎么说呢,就是有一点规定:(或准则) 数组名可以看成是指向数组头元素的指针, ...

  5. C指针 指针和数组 二维数组的指针 指针应用

    直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...

  6. C语言多维数组的指针传递

    在C语言中为了节省空间,提高运行速度经常使用指针来完成数组的传递. 对于一维数组而言可以直接传递首地址 而对于二维数组必须在传递时声明是二维数组的指针,并且调用时也要经过一些运算 首先是定义形参: 函 ...

  7. C++笔记-数组指针/二维数组转换指针

    参考资料: 1. 作者 BensonLaur  :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...

  8. C语言 二维数组(指针)动态分配和释放(转)

    C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...

  9. c语言编程-----指向二维数组的指针

    c中如何返回一个指向二维数组的指针 #include <stdio.h> #include <stdlib.h> #define COUNT 3 typedef int (*M ...

随机推荐

  1. 【原创】Python第二章——字符串

    字符串是一个字符序列,(提醒:序列是Python的一个重要的关键词),其中存放UNICODE字符.Python中的字符串是不可变的(immutable),即对字符串执行操作时,总是产生一个新的字符串而 ...

  2. Java 容器源码分析之 ArrayList

    概览 ArrayList是最常使用的集合类之一了.在JDK文档中对ArrayList的描述是:ArrayList是对list接口的一种基于可变数组的实现.ArrayList类的声明如下: 12 pub ...

  3. go捕获Ctrl+C信号

    我们希望当服务器接收到一个 SIGTERM 信号时能够自动关机,或者做一些善后的操作,以下是实现的方法 package main import ( "os" "os/si ...

  4. 监控MySQL组复制

    使用 Perfomance Schema 中的表来监控组复制,假定你的MySQL编译时已经启动了 Performance Schema 表.组复制将添加如下两张 P_S 表: performance_ ...

  5. .Net EF6+Mysql 环境搭建

    由于一直使用的数据库是mysql,之前所用的orm都是轻量级的例如 dapper 这些的,然后想用ef配置一下mysql,总共时间花了差不多2天,才将坑填完,写个博客将流程记录一下 给后来者少掉点坑. ...

  6. WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  7. webapi 控制json的字段(key)显示顺序

    使用两个c#的特性: 加在类上的:[DataContract] 加在字段上的:[DataMember(Name = "ResultCode",EmitDefaultValue = ...

  8. C#中struct和class的区别详解

    本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...

  9. ASP.NET MVC 学习笔记-7.自定义配置信息

    ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, <appSettings> <add key="LogInf ...

  10. mongodb "Element '{0}' does not match any field or property of class" 异常的解决方法

    在序列化的对象上增加 [BsonIgnoreExtraElements]