博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++二维数组的用法
阅读量:5115 次
发布时间:2019-06-13

本文共 1440 字,大约阅读时间需要 4 分钟。

二维数组在存储时按行优先连续存储,数组名是一个二维指针,如 int a[3][2] 中,a 是一个二维指针,而a[0],a[1],a[2]都相当于普通的一位数组的数组名,是一个固定值的指针。

二维数组在声明的时候可以直接全部赋值,如:

int a[2][3]={0};//All elems are 0
int a[2][3] ={
1,2,3,4,5,6}; Or int a[2][3] ={{
1,2,3},{
4,5,6}};

也可以在声明时部分赋值,如:

int a[3][3] ={{
1,2},{
4,5,6},{}};

不能先声明再全部赋值,如下方式是错误的:

int a[2][3];a[2][3]={{
1,2,3},{
4,5,6}};

 二维数组作为函数的“返回值”,有两大类

一. 外部二维数组作为函数参数传进来,本函数对其的操作在函数外也有效(因为二维数组的名称同一位数组一样,也是一个固定值的指针),其实这个不算是函数的返回值,如:

int a[2][3] ={{
1,2,3},{
4,5,6}}; void add(int b[][3]) {
  a[0][0] += 10;   a[1][2] +=20; } cout<<"a[0][0]= "<

 结果为:

a[0][0]= 11 a[1][2]= 26 二. 将函数的返回值定义为二维数组指针类型,这样返回的就是真正的二维数组。而这种方式也有两种: 1. 如下,函数返回的是一个二维数组指针,而这个二维数组的规格是 int arr[][2]
#include 
int (*fun(int b[][2]))[2] { return b; // return a 2_dim array pointer} int main() { int i,j; int a[2][2]={
1,2,5,6}; int (*c)[2]; //c is a pointer variable of 2-dim array c = fun(a); for(i=0;i<2;i++) for(j=0;j<2;j++) printf("%d ",c[i][j]); return 0; }

2. 用 typedefine 类型定义,可以增加程序的可读性

#include 
typedef int (*R)[2]; // R is a new data type!R fun(int b[][2]) { return b; } int main() { int i,j; int a[2][2] = {
1,2,5,6}; R c; c = fun(a); for(i=0;i<2;i++) for(j=0;j<2;j++) printf("%d ",c[i][j]); return 0; }

 

转载于:https://www.cnblogs.com/ustcysl/p/5571826.html

你可能感兴趣的文章
0118——UIButtton
查看>>
Task/Parallel实现异步多线程
查看>>
docker --命令
查看>>
关于phpexcel读取时间字段的格式不正确
查看>>
Win7系统C盘空间不足
查看>>
昨晚调试一段PHP程序时遇到的三个问题
查看>>
J2EE 全面简介
查看>>
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析...
查看>>
Bink Player
查看>>
easyui datagrid 键盘上下控制选中行
查看>>
CF-63D - Dividing Island(水题)
查看>>
Spring Boot JDBC 使用教程
查看>>
使用json对象要注意的地方
查看>>
28. Implement strStr()子串匹配
查看>>
CSS属性小结之--半透明处理
查看>>
bzoj 2527: [Poi2011]Meteors
查看>>
Jenkins pipeline+Maven+Gitlab
查看>>
E. 转义字符
查看>>
delphi 2010 播放GIF动画
查看>>
xampp 中 mysql的相关配置
查看>>