c/c++ 多维数组和指针
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++ 多维数组和指针的更多相关文章
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- C语言--指向多维数组的指针和指针数组
#include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- c语言中双维数组与指针的那点事儿
说起c语言的指针,估计对c语言只是一知半解的同志们可能都会很头疼,尤其它跟数组又无耻的联系到一起的时候,就更加淫荡了!!! 怎么说呢,就是有一点规定:(或准则) 数组名可以看成是指向数组头元素的指针, ...
- C指针 指针和数组 二维数组的指针 指针应用
直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...
- C语言多维数组的指针传递
在C语言中为了节省空间,提高运行速度经常使用指针来完成数组的传递. 对于一维数组而言可以直接传递首地址 而对于二维数组必须在传递时声明是二维数组的指针,并且调用时也要经过一些运算 首先是定义形参: 函 ...
- C++笔记-数组指针/二维数组转换指针
参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...
- C语言 二维数组(指针)动态分配和释放(转)
C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...
- c语言编程-----指向二维数组的指针
c中如何返回一个指向二维数组的指针 #include <stdio.h> #include <stdlib.h> #define COUNT 3 typedef int (*M ...
随机推荐
- 【原创】NVIC中断
(1)NVIC 全称为Next Vector Interrupt Controoler,嵌套中断向量控制器,是ARM Cortex M3的内部设备之一,任何一款基于ARM Cortex M3的 ...
- eclipse导入的项目resource包被当做成文件夹
项目中遇到的问题: 导出的项目(错误) 原本应该是这样的 需要这样设置一下: 1 2 最后就变回来了!
- (转)解决 TortoiseGit 诡异的 Bad file number 问题
此问题,请不要使用 rebase, 下载最新的 TortoiseGit 即可: TortoiseGit-2.3中文版与Git安装包_手册: http://download.csdn.net/detai ...
- 项目实战2—实现基于LVS负载均衡集群的电商网站架构
负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响 ...
- 第9章 Linux进程和信号超详细分析
9.1 进程简单说明 进程是一个非常复杂的概念,涉及的内容也非常非常多.在这一小节所列出内容,已经是我极度简化后的内容了,应该尽可能都理解下来,我觉得这些理论比如何使用命令来查看状态更重要,而且不明白 ...
- ZooKeeper系列(3):znode说明和znode状态
ZooKeeper系列文章:https://www.cnblogs.com/f-ck-need-u/p/7576137.html#zk 1.znode znode的官方说明:http://zookee ...
- Spring Boot入门(2)使用MySQL数据库
介绍 本文将介绍如何在Spring项目中连接.处理MySQL数据库. 该项目使用Spring Data JPA和Hibernate来连接.处理MySQL数据库,当然,这仅仅是其中一种方式,你也 ...
- 第一册:lesson fifty one.
原文: A pleasant climate. A:Where do you come frome? B:I come from Greece. A:What's the climate like i ...
- 【转载】ASP.NET MVC设置允许跨域访问
默认情况下,浏览器端发送Ajax请求一般被禁止跨域访问,如A域名网站访问B域名网站的请求会被终止,在ASP.NET MVC项目中,我们可以配置相应的设置项,允许网站的接口跨域访问,主要需要设置Acce ...
- 【转载】ASP.NET自定义404和500错误页面
在ASP.NET网站项目实际上线运行的过程中,有时候在运行环境下会出现400错误或者500错误,这些错误默认的页面都不友好,比较简单单调,其实我们可以自行设置这些错误所对应的页面,让这些错误跳转到我们 ...