c语言数组的数组,c语言数组百度百科

c语言数组的数组,c语言数组百度百科,C语言数组详细介绍

大家好,本文主要讲C语言数组的详细介绍。有兴趣的同学过来看看。如果对你有帮助,记得收藏起来下次浏览。

目录

什么是数组一维数组二维数组数组越界数组名称结束

什么是数组

数组用来存储同一种类型的集合,这是一个有序的线性结构表。数组元素的地址是连续

array最大的优势是支持随机访问。当你想访问某个数的数组时,你只需要找到该数组对应的下标就可以直接找到该数组对应的元素。但是数组也有相应的缺点,就是元素的个数和数组空间的大小在创建的时候是固定的。如果数组的空间没有用完,也会造成空间浪费。因为数组是地址是连续,这应该是一个优势,但这导致数组在删除或添加元素时需要O(n)才能完成。

数组下标

数组的下标从0开始。假设,访问arr[5]元素时,访问数组的第六个元素,访问arr[0]时,访问数组的第一个元素。

一维数组

一维数组创建

一维数组是常见的数组,其创建方法为:数据类型 + 数组名 [ 元素个数 ];

int arr[10];

C99标准之前,创建数组时,方括号中的数组元素个数只能是常量,使用的常数也必须是真常数。比如用const修饰的变量有常量属性,但不是真常量,而define定义的常量可以作为C99后面方括号中的元素可以用数组元素个数,而使用变量作为数组元素个数的数组称为变量

一维数组初始化

int arr[10]={1,2,3,4,5,6,7,8,9,10 };//塑造数组

Int arr[]={0}//未指定大小,但必须进行初始化。

char ch[10]={'1 ',' 2 ',' 3 ' };//字符数组

char str[10]=' abcde ';//字符串数组

一维数组的赋值

使用循环变量访问数组下标并将值赋给数组。变长数组。对应输入一个字符串,需要提供一个字符数组来存储。数组名是一个地址,所以不需要添加地址。

int arr[10]={ 0 };

for(int I=0;i 10我)

{

scanf('%d ',arr[I];

}

char str[10]={ 0 };

scanf('%s ',str);//不需要地址和循环就可以完成字符串赋值。

一维数组在内存中的存储方式

一维数组的元素地址是%s,即元素的地址是相邻的。地址内存存储在连续的,但如果用二进制显示,会很长,可能不容易理解,所以用二进制显示。(下图)看下图可以发现,地址随着下标的增加由低到高,每个数组元素的地址相差十六进制。四个字节的差异是由int决定的空间大小。

二维数组

二维数组在我们的逻辑概念中可以是一个四个字节,但在内存中是一个像一维数组一样的连续地址空间。我们通常把二维数组的第一个方括号看成一行,第二个方括号看成一列。

二维数组的创建和初始化

二维数组和一维数组只是加了一个方括号。矩阵

int arr[3][3]={1,2,3,4 };//4自动保存到arr[1][0]的位置

int arr[3][3]={{1,2,3},

{4,5,6},

{7,8,9}};//一个大括号代表一行,每个大括号用逗号分隔

int arr[][3]={ 0 };//二维数组可以不初始化行,但必须初始化列。

二维数组赋值

给二维数组赋值,和一维数组一样,需要一个循环,但是二维数组需要在一维数组循环的基础上再嵌套一层循环。

int arr[3][3]={ 0 };

for(int I=0;i3;我)

{

for(int j=0;j 3;j)

{

scanf('%d ',arr[I][j]);//i访问行,j访问列。

}

}

数组越界

数组的下标范围是有限的,因为数组的下标从0开始,所以数组可以访问的下标是数组元素个数减一(数据类型 + 数组名[元素个数][元素个数];)。当访问不属于数组元素地址范围的空间时,称为N-1。假设arr[10]的数组当其下标大于或等于10时会向后溢出,也称为数组越界。另一方面,当数组在数组的第一个元素前出界,即其下标小于0时,称为下溢出。越界是一个非常危险的操作,因为有些编译器没有检查数组是否越界的功能,所以二维数组的行和列也是如此。

数组名

数组名是指向数组第一个元素的地址的指针,也就是下标为0的元素的地址。如上所述,由于数组的地址是连续的,所以当找到数组的第一个元素时,可以找到数组的其他成员。如果使用上溢出,这里的数组名代表整个数组,计算整个数组的大小。除以sizeof(数组名)得到数组中元素的个数。

数组的参数传递方法

在将数组作为函数参数传递时,需要在函数的参数传递位置放一个数组名,参数部分会收到一个指向数组第一个元素地址的指针,这需要相同类型的指针。在形参部分,数组可以用两种形式表示,一种是数组的形式,一种是指针的形式,两种方式都可以用来给数组传递参数。

void bubble_sort(int arr[])

void bubble_sort(int* arr)

当向数组传递参数时,函数部分无法计算数组中元素的数量。因为参数只接收一个数组的第一个元素地址的指针,而不是整个数组,所以在计算数组的时候,只计算数组的第一个元素地址的大小,然后除以第一个元素地址的大小,自然得到1。所以当一个数组需要传递参数,需要使用数组中的元素个数时,首先要计算数组中的元素个数,计算出的元素个数要和数组一起传递参数。

结尾

其实不仅有一维和二维数组,还有维数甚至更高的三维数组,只是很少用在场合,新手用二维数组就够了。

关于C语言数组的详细介绍这篇文章就到这里了。有关C语言数组的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • Sys Config,sysconfig百度知道
  • Sys Config,sysconfig百度知道,CONFIG.SYS文件的命令与配置
  • SEO教程搜索引擎优化百度整站,搜索引擎优化教程整站SEO
  • SEO教程搜索引擎优化百度整站,搜索引擎优化教程整站SEO,搜索引擎优化《SEO教程2007版》下载
  • gaussdb数据库使用,gaussdb数据库百度百科
  • gaussdb数据库使用,gaussdb数据库百度百科,gaussDB数据库常用操作命令详解
  • django框架百度百科,django框架设计模式
  • django框架百度百科,django框架设计模式,Django框架模型简单介绍与使用分析
  • deepinxp 百度网盘,
  • deepinxp 百度网盘,,deepin xp精简版(220M) 下载
  • windows10百度网盘怎么下载,win10纯净版百度云下载
  • 百度输入法与qq输入法哪个好,qq输入法好用还是搜狗输入法好用
  • ,,百度搜霸——带给你最全的信息高速搜索
  • c语言数组的数组,c语言数组百度百科,C语言数组详细介绍
  • 电脑百度网盘离线下载位置在哪,电脑百度网盘离线下载位置错误
  • 留言与评论(共有 条评论)
       
    验证码: