C语言讲义——二维数组
二维数组,又称为矩形数组
可以不太准确地理解为“数组的数组”
也可以认为是一个表格
然而内存中并不是表格存储:
二维数组的初始化
- 第一维度可以省略
- 所有元素可以写在一个花括号中,计算机认识,但是对人来说可读性太差。
int month1[4][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int month2[4][3]= {1,2,3,4,5,6,7,8,9,10,11,12};
int month3[][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int month4[][3]= {1,2,3,4,5,6,7,8,9,10,11,12};
具体代码如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
// 分批赋值
int month[4][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
for (int i = 0; i < 4; i++ ) {// 第一维度
for (int j = 0; j < 3; j++ ) {// 第二维度
printf("月[%d][%d] = %d\n", i,j, month[i][j] );
}
}
/************************************************************/
// 一气呵成
int month2[4][3]= {1,2,3,4,5,6,7,8,9,10,11,12};
for (int i = 0; i < 4; i++ ) {// 第一维度
for (int j = 0; j < 3; j++ ) {// 第二维度
printf("_月[%d][%d] = %d\n", i,j, month[i][j] );
}
}
/************************************************************/
// 一维缺省
int month3[][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
for (int i = 0; i < 4; i++ ) {// 第一维度
for (int j = 0; j < 3; j++ ) {// 第二维度
printf("一维缺省:月[%d][%d] = %d\n", i,j, month3[i][j] );
}
}
return 0;
}
*只有第一维度可以省略
扩展到三维数组,在定义时也只有第一维度可以省略。
#include <stdio.h>
int main(int argc, char *argv[]) {
// 三维数组(只有第一维度可以缺省)
int q[][2][2]= {1,2,3,4,5,6,7,8};
for (int i = 0; i < 2; i++ ) {
for (int j = 0; j < 2; j++ ) {
for (int k = 0; k < 2; k++ ) {
printf("三维数组[%d][%d][%d] = %d\n", i,j,k, q[i][j][k] );
}
}
}
return 0;
}
示例:矩阵乘法
- 设A为m*p的矩阵
- B为p*n的矩阵
- 那么称m*n的矩阵C为矩阵A与B的乘积
- 记作C=AB
- 矩阵C中的第i行第j列元素可以表示为:
- 求:
#include <stdio.h>
#define C_M 2
#define C_N 2
#define C_P 3
int main(int argc, char *argv[]) {
int a[C_M][C_P] = {{1,2,3},{4,5,6}};
int b[C_P][C_N] = {{1,4},{2,5},{3,6}};
for(int m = 0; m < C_M; m++) {
for(int n = 0; n < C_N; n++) {
int temp = 0;
for(int p=0; p<C_P; p++) {
temp += a[m][p]*b[p][n];
}
printf("%d ", temp);
}
printf("\n");
}
return 0;
}
C语言讲义——二维数组的更多相关文章
- C语言之二维数组
二维数组 还是一个数组,只不过数组中得每一个元素又是一个数组 1). 声明语法 类型 数组名[行][列]; 例: int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型 c ...
- C语言 字符二维数组(多个字符串)探讨 求解
什么是二维字符数组? 二维字符数组中为什么定义字符串是一行一个? “hello world”在C语言中代表什么? 为什么只能在定义时才能写成char a[10]="jvssj" ...
- C语言中将二维数组作为函数参数来传递
c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...
- C语言回顾-二维数组
1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- C语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
- 【C语言】二维数组做形参
二维数组有两种形式: ①在栈上: int a[4][4] = {...}; ②在堆堆上: int ** a = new int *[4]; for ...
- 【学习笔记】【C语言】二维数组
1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...
- iOS,object-c传参c语言的二维数组
有那么一瞬间,懒得用NSArray,NSNumber,NSValue等一大堆蛋疼的转换,所以就定义了一个C的二维数组,反正OC支持C混编,可是蛋疼往往是传递的,这里不疼了,哪里就要疼,想把一个c的二维 ...
随机推荐
- 走在深夜的小码农 Fifth Day
Css3 Fifth Day writer:late at night codepeasant 学习大纲: 一.css三大特性 1.层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠) ...
- RabbitMQ相关概念的理解
1.什么是消息? 消息就是程序(服务)之间传递的数据(图/文/声/像). 2.MQ是什么? MQ(MessageQueue)是指消息队列亦或消息总线.是消息的容器,这个容器的策略是FIFO(先进先出) ...
- Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)
1.简介 今天这篇文章主要是给大家讲解一下,如何部署测试环境,这里宏哥部署一个开源测论坛,后边的文章中会用到这个论坛,并且也看到童鞋们在群里讨论如何在开发将测试包发给你以后,你如何快速地部署测试环境. ...
- JavaSE基础语法学习
标识符 表示类名的标识符用大写字母开始. 表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始. 注意 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($).或者下划线(_)开始 ...
- .NET必知的EventCounters性能指标监视器
在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具dotnet-counters而另一个是代码级别的EventListener. 使用dotnet-counters dotnet- ...
- CVE-2020-0769逆向分析
受影响版本: 系统 版本 Microsoft Windows 10 Windows 10 1607 Windows 10 1709 Windows 10 1803 Windows 10 1809 Wi ...
- MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总
文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...
- 利用matlibplot绘制雷达图
之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不 ...
- UNP——第三章,套接字编程介绍
1.套接字结构 多数套接字函数都有套接字结构参数,每个协议族都定义了自己的套接字结构,以 sockaddr_ 开始,并对应协议族的唯一后缀. struct sockaddr_in { uint8_t ...
- setPriority()优先级
1 . 优先级表示重要程度或者紧急程度.但是能不能抢到资源也是不一定.2 . 分配优先级:反映线程的重要或紧急程度线程的优先级用1-10 表示,1的优先级最低,10的优先级最高,默认值是5 packa ...