当前位置: 首页 > news >正文

网站建设玖金手指谷哥十济南网站优化排名推广

网站建设玖金手指谷哥十,济南网站优化排名推广,如何制作一个网页页面,yfcms企业网站建设在学习二维数组之前,掌握一维数组是非常重要的。 对于一维数组的学习,读者可以参考我写过的博客: C语言(15)-------------->一维数组-CSDN博客 这里面由浅入深地介绍了C语言中一维数组的使用。 一、二维…

在学习二维数组之前,掌握一维数组是非常重要的。

对于一维数组的学习,读者可以参考我写过的博客:

C语言(15)-------------->一维数组-CSDN博客

这里面由浅入深地介绍了C语言中一维数组的使用。

一、二维数组的定义

在C语言中,二维数组是一维数组的数组。这句话可能在这里不太好理解,没关系,文章后面会对此进行解释。

由二维数组的定义可知,二维数组的数组就是三维数组 。在C语言中,我们称二维数组以及以上的都称为多维数组。

二、二维数组的创建

二维数组的语法是:

数据类型 数组名[][]

这里的数据类型指的是int float double......即C语言的内置数据类型。 

第一个[]指的是数组的行,第一个[]指的是数组的列。

#include <stdio.h>int main()
{int arr[3][5];//创建一个3行5列的二维数组,数组里面存放的是整数return 0;
}

这段代码中的int arr[3][5]指的是3行5列的数组,这个数组里面存的都是整数。

如果我们要定义一个二维数组,它是4行6列的,里面存放的都是字符,如何创建呢?

#include <stdio.h>int main()
{char arr[4][6];//创建一个4行6列的二维数组,数组里面存放的是字符return 0;
}

三、二维数组的初始化

二维数组的初始化有4种,不完全初始化、完全初始化、按照行初始化、省略行的初始化。

3.1不完全初始化 

 不完全初始化指的是数组里面的存放的内容小于数组的开辟大小。

举个例子:

#include <stdio.h>int main()
{int arr[4][6] = {1,2,3,4,5,6,7,8,9,10};//元素不够时使用0进行填充return 0;
}

二维数组arr是一个4行6列的数组,它可以存放24个数字,而现在我们存放的内容是1到10这10个整数是小于24的,所以这是一个典型的二维数组不完全初始化。

3.2完全初始化

 完全初始化指的是数组里面的存放的内容等于于数组的开辟大小。

举个例子:

#include <stdio.h>int main()
{int arr[3][5] = {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};return 0;
}

 二维数组arr是一个3行5列的数组,它可以存放15个数字,而现在我们存放的内容是15个数字,所以这是一个典型的二维数组完全初始化。

3.3按照行初始化

按照行初始化指的是,我们可以使用{}将我们的数据括起来,{}所包括的内容为1行。而每个{}的内容应该小于我们的列数。

举个例子:

#include <stdio.h>int main()
{int arr[3][5] = { {1,2},{3,4},{5} };return 0;
}

3.4省略行的初始化 

在二维数组的定义中,行是可以省略的,但是不可以省略列。

此情况是根据内容确定行数的。

举个例子:

#include <stdio.h>int main()
{int arr[][6] = {1,2,3,4,5,6,7,8,9};return 0;
}

对于:

#include <stdio.h>int main()
{int arr[][6] = { 1,2,3 };return 0;
}

二维数组中的数字不足6个,实际上只有一行。

下面来看看几个例子:

(1)实际上开辟两行的:

#include <stdio.h>int main()
{int arr[][6] = { 1,2,3,4,5,6,7 };return 0;
}

(2)开辟三行的:

#include <stdio.h>int main()
{int arr[][6] = { {1,2},{3,4},{5} };return 0;
}

四、二维数组的使用

二维数组在内存中的存储,每一个存储空间都是有编号的。C语言的编号是从0开始的。

#include <stdio.h>int main()
{int arr[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };printf("%d",arr[2][1]);return 0;
}

上面这个代码创建并初始化了3行5列的数组,数组每一个空间存储的都是整数。

 红色的表示行的下标,蓝色的表示列的下标。

那上面的代码arr[2][1]指的就是12。

运行结果:

五、在二维数组中输入与输出

 下面我们来一个练习,在二维数组中输入数字,输入完成之后将其打印在屏幕上。

#include <stdio.h>int main()
{int arr[3][5] = { 0 };int i = 0;//控制行//输入数字for (i = 0; i < 3; i++)//确定行数为3{int j = 0;//控制列for (j = 0; j < 5; j++)//确定列数为5{scanf("%d",&arr[i][j]);}}//打印数字for (i = 0; i < 3; i++)//确定行数为3{int j = 0;//控制列for (j = 0; j < 5; j++)//确定列数为5{printf("%d ", arr[i][j]);}printf("\n");//每一行打印5个数字后换行}return 0;
}

运行结果:

六、二维数组在内存中的存储

代码:打印二维数组每个元素在内存中的地址

#include <stdio.h>int main()
{int arr[3][5] = { 0 };int i = 0;//控制行//打印地址for (i = 0; i < 3; i++)//确定行数为3{int j = 0;//控制列for (j = 0; j < 5; j++)//确定列数为5{//注意:取地址时不要忘记使用取地址操作符&printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);}}return 0;
}

运行结果:(x86)

从结果中,我们可以知道:

二维数组在内存中也是连续存放的。

二维数组可以看成一维数组的数组。

存放一维数组的数组,二维数组中的每个元素都是一维数组。 

 

 七、C99中的变长数组 

在C99之前数组的大小是用常量指定的。

例如:

#include <stdio.h>int main()
{int arr[10];//这里不是变长数组return 0;
}

或者:(此处使用的是宏定义,运行代码时M将被替换为100)

#include <stdio.h>
#define M 100int main()
{int arr[M];//这里不是变长数组return 0;
}

 在C99之后,引入了变长数组,可以使用变量来指定数组的大小。可惜的是,VS2019不支持这个语法。大家想要尝试这个语法可以在Vscode远程连接Linux服务器的gcc尝试,或者DevC++这种集成gcc编译器的IDE。

参考代码:

#include <stdio.h>int main()
{int num = 0;scanf("%d",&num);int arr[num];//注意变长数组不能被初始化int i = 0;//输入数字for (i = 0; i < num; i++){scanf("%d",&arr[i]);}//打印数字for (i = 0; i < num; i++){printf("%d ",arr[i]);}return 0;
}

 值得一说的是,变长数组是不能初始u啊的,程序运行时根据数组分配来确定实际的大小。

http://www.dtcms.com/a/460655.html

相关文章:

  • 在网上帮做图片的网站wordpress 根目录函数
  • 内含各种专业的网站搭建模板沈阳工程招标网
  • 塑胶制品东莞网站建设珠宝网站官网建设需求
  • 山东嘉邦家居用品公司网站 加盟做经销商多少钱 有人做过吗网站建设 需求模板
  • 公司网站无法收录桂建云官网
  • 网站 注册模块怎么做上海高端网站建
  • 校园类网站建设wordpress 4.0 谷歌
  • 网站需求分析的重要设计模板网站
  • 2012系统 做网站佛山网站建设佛山网络推广
  • 个人作品网站策划书大航母网站建设在哪里
  • 东莞网站建设优化排名好看的网站首页图片
  • 做网站后端要什么技术国内电子商务网站有哪些
  • 微信网站特征wordpress更改登录地址
  • 河南制作网站jsp做的大型网站
  • 网上找兼职的网站做网站业务员如何跟客户沟通
  • 购物网站开发的背景介绍做网站的是不是程序员
  • 巢湖网 网站网站建没有前景
  • 网站源码建站视频广告东莞网站建设技术支持
  • 群晖服务器做网站怎么制作悬赏平台app
  • php mysql网站后台源码北京口碑好装修公司
  • 合肥市有做网站的公司吗关键词网站优化平台
  • 淄博桓台网站建设报价网站 301
  • 30个免费货源网站网站设计是后台做的还是前台做的
  • 广州网站建设服务哪家好用记事本做网站
  • 全屏响应式网站模板seo的搜索排名影响因素有哪些
  • 招聘网站报表怎么做百度手机版下载
  • 从化网站开发做网站为什么要用php框架
  • 洛阳市做网站贴吧公司建设网站费用会计怎么记
  • 网站建设科技微信小程序登陆入口官网
  • 宁波建设网 公积金网点seo顾问服务深圳