快速入门之数组

数组

一维数组

数组就是从某个地址开始连续若个位置形成的元素集合,定义格式:数据类型 数组名[数组大小]; 数组大小必须是整数常量,不可以是变量,只能访问下标为0~size-1的元素

一维数组的初始化,需要给出用逗号隔开的从第一个元素开始的若干个元素的初值,并用大括号括住,未被赋初值的元素一般情况默认初值为0

冒泡排序

冒泡排序的本质在于交换,相邻的两个元素进行比较,利用中间量将较大的数放在后面一个位置,和后面的元素继续进行比较,直到放到最后一个位置,进行n-1趟便可以将数组从小到大进行排序

程序源码
运行结果

二维数组

二维数组是一维数组的扩展,格式:数据类型 数组名[第一维大小][第二维大小];


代码示例
运行结果

特别提醒:如果数组大小较大(大概10^6 级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大

关于动态存储区、静态存储区、堆、栈的区别

关于动态存储区、静态存储区、堆、栈的示例说明

memset——对数组中每一个元素赋相同的值

利用memset函数可对数组中每一个元素赋以相同的值,注意使用memset函数需要在程序开头添加string.h头文件,memset函数的格式为:memset(数组名, 值, sizeof(数组名));

memset使用的是按字节赋值,即对每个字节赋相同的值,这样组成int型的4个字节就会被赋成相同的值。由于0的二进制补码为全0,-1的二进制补码全为1,所以可利用memset赋0或-1,如果要对数组赋其他数字,则使用fill函数(但是memset速度更快)

字符数组

字符数组的初始化

字符数组也可以像普通数组那样进行初始化,也可以通过直接赋值字符串来初始化(仅限于初始化,程序其他位置不允许这样直接赋值整个字符串)

字符数组的输入输出

scanf输入,printf输出

scanf对字符类型有%c和%s两种格式,printf同理。对于scanf而言,%c用来输入单个字符,能够识别空格跟换行并将其输入,%s用来输入一个字符串并存在字符数组里,通过空格或换行来识别一个字符串的结束,同时后面对应数组名前面是不需要加&取地址运算符的

getchar输入,putchar输出

getchar和putchar用来输入和输出单个字符,getchar可以识别换行符

gets输入,puts输出

gets用来输入一行字符串,识别换行符作为输入结束,将其存放于一维数组;当输入多行,利用getchar接收换行符后再继续使用gets,将其存放于二维数组

puts用来输出一行字符串,即将一维数组(或二维数组的一维)在界面上输出,并紧跟一个换行符

字符数组的存放方式

在一维字符数组(或是二维字符数组的第二维)的末尾都有一个空字符\0,以表示存放的字符串的结尾。在使用gets或scanf输入字符串时会自动在输入的字符串后面添加一个空字符,并占用一个字符位,而puts和printf就是通过识别空字符作为字符串的结尾来输出的

注意:空字符\0,即NULL,其ASCII码为0(区别:空格的ASCII码为32),占一个字符位,字符数组的长度一定要比实际存储字符串的长度至少多1;如果使用getchar输入字符串,需要在输入的字符串后加入空字符\0,否则printf和puts输出字符串会因无法识别字符串末尾而输出一大堆乱码

string.h头文件

strlen()

strlen函数可以得到字符数组中第一个\0前的字符的个数,格式:strlen(字符数组);

strcmp()

strcmp函数返回两个字符串大小的比较结果,比较原则是按字典序(就是字符串在字典中的顺序),格式:strcmp(字符数组1, 字符数组2);

返回结果:如果字符数组1<字符数组2,则返回一个负整数;如果字符数组1==字符数组2,则返回一个0;如果字符数组1>字符数组2,则返回一个正整数

strcpy()

strcpy函数可以把字符串2复制给字符串1,包括字符串2结束时的空字符\0,格式:strcpy(字符串1, 字符串2);

strcat()

可以把一个字符串连接到另一个字符串后面,连接从空字符所在的字符位开始,格式:strcat(字符串1, 字符串2); 

sscanf与sprintf

sscanf(str, "%d", &n)的作用是把字符数组str中的内容以"%d"的格式写到n中(还是从左至右);sscanf支持正则表达式

sprintf(str, "%d", &n)的作用是把n以"%d"的格式写到字符数组str中(还是从右至左)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,428评论 0 2
  • 数组 :数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 数组的简单语法 数组应...
    ElliotYamin阅读 340评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,508评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,275评论 0 4
  • 美好的一天从大鸟原创壁纸开始。 点击图片,长按保存,设为壁纸。 欢迎转发链接给朋友,像素无损。 设置壁纸时,可以手...
    大鸟8wo阅读 482评论 2 10