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. 微信分享JS-SDK

    微信JS-SDK,提供给开发者的基于微信内的网页开发工具包 使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微 ...

  2. NiftyNet项目介绍

    NiftyNet项目介绍  简述  NiftyNet是一款开源的卷积神经网络平台,旨在通过实现医学图像分析的深度学习方法和模块,支持快速原型和再现性,由WEISS (Wellcome EPSRC Ce ...

  3. 为Linux配置常用源:epel和IUS

    CentOS上,除了os类的yum源,还需要配置几个常用的源:epel.ius. 有很多国内很多镜像站点都提供了各类仓库的镜像站点,个人感觉比较全的是阿里云http://mirrors.aliyun. ...

  4. QT 完美实现圆形按钮

    QT 版本:5.6.0 官方的按钮有些普通,如果我们想要换成自己喜欢的按钮而却无从下手,那么请继续往下阅读(皮一下). 首先,可以在网络上搜索一下自己喜欢的按钮图形(或者可以自行绘制),我以下面的图形 ...

  5. MySQL系列详解七:MySQL双主架构演示-技术流ken

    前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...

  6. 第一册:lesson sixty nine.

    原文: The car race. There is a car race near our town every year. In 1995 ,there was a very big race. ...

  7. 【转载】IIS报错不是有效的Win32应用程序

    今天在IIS中部署ASP.NET网站后,访问网站报错,提示信息为:未能加载文件或程序集XXX.dll或它的某一个依赖项,不是有效的Win32应用程序(异常来至HRESULT:0x800700C1).通 ...

  8. 【转载】Sqlserver中查询窗口显示行号

    在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

  9. Docker虚拟机实战

    安装Docker虚拟机 ◆ 先更新yum软件管理器,然后再安装Docker    #更新yum软件管理器    yum -y update    #安装Docker    yum install -y ...

  10. Tomcat的Https设置及Http自动跳转Https

    Https相关介绍    Https是由NetScape公司设计的一个基于Http的加密传输协议,可以这样理解Https = Http +SSL(安全套接层),Https的端口为443,而且还需要申请 ...