c语⾔printf中⽂乱码_C语⾔编程(五)
本章介绍的是C语⾔的数组。
什么是数组呢?
如果⼀个变量名后⾯跟着⼀个带着数字的中括号,那这个声明就是数组声明。 ⽐如 int Array[5]; 就是⼀个数组。
在C语⾔中,数组分为⼀位数组和多维数组,⽐如上⾯的Array就是⼀维数组,⽽int B[2][3]就是⼆维数组。今天先介绍的是⼀维数组
。
⾸先我们来声明⼀个数组array:char array[2];
这样的声明表明array是⼀个char类型的⼀维数组,它在内存中占有两个地址连续的存储空间,并且它所存储的元素都是相同类型的。
char是字符型,所以array能存储两个字符。
现在给array赋值来测试⼀下。
c语言中文网汇编语言char array[2]="hi";printf("array is =%s\n",array);
在linux环境下,发现确实打印了hi,但是hi后⾯是乱码的,其实是因为"hi"这个字符串最后⾯还有"/0",没错"/0"也是⼀个字符,所以字符串"hi"占3个字节。
但是数组array只分配了2个字节的存储空间,内存不够导致数组越界,所以输出会乱码。(如果⽤vs等IDE,会直接报错提⽰)。
现在只需要把array[2]改成array[3]就可以正常打印。通常写为char array[2+1]更清晰。
数组与⽣活的联系:
数组在内存中是连续的存储地址,我们可以把计算机内存想象成地球上的⼀个⼩区,⼀个数组就是⼩区的⼀个单元楼,数组的第⼀个元素就
是1楼、第⼆个元素就是⼆楼,以此类推。所以数组可以⽤来存储对应数据类型的数据,在⽇常开发中使⽤⾮常频繁。
注意:因为计算机中的顺序是以0开始的,所以array的第⼀个元素是array[0],第⼆个是array[1]。所以如果⽤array[2]做运算是会报错
的。
数组为什么⽀持下标访问(下标访问即array[2],表⽰取第三个元素的地址):
因为数组名的地址就是数组⾸元素的地址,所以数组array的地址其实就是array[0]的地址,⽽数组是地址连续的存储空间,所以通过
array[]的下标访问⽅式,就可以很快得到后⾯任意的数组元素。
数组在代码中的作⽤:
⽤于存储指定数据类型的数据,⽐如存储⼀串http地址,⽤于下次访问的时候可以直接从数组中取出来。
引申知识点:
通常我们对数组赋值,是这样做的:
char array[1024]; //声明⼀个1024个元素的数组memset(&array,0,sizeof(1024));//清空数组,防⽌赋值后打印出现乱码memcpy(&array,"hello",5); //将hello拷贝到arra
上⾯⽤到了两个函数,⼀个是memset清空函数,⼀个是memcpy拷贝函数,⽇常开发中,涉及到数组的操作我们会频繁使⽤到这两个函
数,在这⾥给⼤家先熟悉⼀下。
接下来,让我们⼀起去学习⼆维数组吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论