数组概念和用法

C语言为数据,提供了一种构造数据类型:数组

除引用外,数组的类型可以是任意的复合类型。数组定义中类型不能引用,即没有引用数组,这是因为引用不能被赋值,而数组中的元素必须被赋值

int  & a[10];这样写是不正确的。

但是定义数组a的引用是可以的。

int a[6]={0,2,3,4,5,10};

int (&p)[6]=a;

如上,p是数组a的引用。

所谓数组就是一组具有相同类型的数据的有序集合。

int a[10];

float b[4];

注意:

int k,

int a[k]; /* 不能用变量说明数组大小*/

注意:在定义数组的时候,尽量在程序开头定义长度,不然改数组大小的时

候,非常麻烦!(编程规范)

例:#define N 10

int a[N ]

每个数据元素占用的字节数,就是基类型的字节数,一个元素占 4个字节;

越界访问,非法访问:

int a[10]={1,2,3,4,5,6,7,8,9,10};

for(i=0;i<13;i++){

printf("a[%d]=%d\n",i,a[i]);

a[12]=100;//越界访问,非法访问

结果:.....i[10]i[11]越界了,i[12]=12,越界访问以后,i[12]=10

数组的初始化:若没有显示提供元素初值,则元素会被普通变量一样初始化

如果是全局数组,元素初始化为0;

如果是内置数组,元素无初始化。另外

在给数组部分赋值的时候,值送到数组的前几个元素中,后面

的元素编译器自动赋值为 0。当然,系统也会相应分配内存。

例:

int a[10]={1,2,3,4,5};

虽然只赋值了五个元素,但是,后五个元素的值默认初始化为 0。系统分配了

4*10=40的字节内存。

说明:函数不支持嵌套定义

注意:调用函数的时候,需要形式参数,比如:数组的数组名,以及数组的长

度;

例:

void print(int a[],int n)

print(a,10);

二维数组

int a[3][4]3 4列),可以把二维数组看成一种特殊的一维数组,每个元

素就是一个一维数组;

存取方式:按行存取,行内按顺序存取;

二维数组初始化,可以省略行数(前面的值),不能省略列数;

内存存储:字节数=二维数组的元素个数*4

注意:在输出的时候,一定要注意输出的格式和输出变量自身的数据类型

char a[10]10个字节

二维数组怎么通过函数调用来打印?

void print(int b[][4],int row)

print(a,3);

注意:行数为空,列数不能为空!

"abcde"在内存中占用6个字节;C语言规定了一个字符串结束标志

'\0'

字符数组并不要求它的最后一个字符为'\0',甚至可以不包括'\0'。系统对字

符串常量自动加一个'\0'。因此,为了使处理方法一致,在字符数组中也常人

为地加上一个'\0'

实例:要用一个新的字符串代替原有的字符串”Pascal program” ,从键盘向

字符数组输入∶Hello ;如果不加0′的话,字符数组中的字符如下

Hellol program

字符数组的输入输出:

1.逐个字符输入输出,用格式符“%c”输入或输出一个字符;

2.将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输

出。

说明:

1.“%s”格式符输出字符串时,printf函数中输出项是字符数组名,而不是

数组元素名;

2.如果数组长度大于字符串实际长度,也只输出到遇到'\0'结束;

3.输出字符不包括结束符‘\0’

4.如果一个字符数组中包含一个以上的'\0',则遇到第一个'\0'时输出就结

束;

5.可以用scanf函数输入一个字符串;

6.scanf不会吸收回车换行和空格。

字符串处理函数:

· gets/puts系列

puts函数:[读取字符串]

语法: ostream &put( char ch );

一般格式:puts(字符数组);

puts函数输出的字符串中可以包含转义字符,例如:\n

函数put()用于输出流,并把字符ch写入流中。

作用:将一个字符串以'\0'结束的字符序列输出到终端。

gets函数:[打印字符串]

一般形式:gets(字符数组);

其作用是从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值

是字符数组的起始地址。


 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值