C语言的数组基础,C语言基础-数组

一、数组(一维数组)

什么是数组?

数组是一组有序的、类型相同的数据的集合

数组的作用?

处理一些类型相同的数据集合

数组的构成:

元素、下标或索引、数组名

定义:

使用前必须定义

1、存储类型

2、数据类型

3、数组名

4、数组大小

语法:

数据类型 数组名[数组长度] ;

例子:int stuIds[22];

备注:

1、数组名后接一个或多个括在方括号内的表达式,用以指定数组的维数

2、数组长度只能是常量和常量表达式(大于0)

定义数组的特性

所有数组元素具有相同的类型

允许使用变量的地方都可以使用数组元素

取值:也可以使用整型表达式引用数组的元素

数组名[整型表达式]

数组里面的每个元素所占字节数和数组类型一致

初始化:

什么是数组初始化:

数组初始化是在数组定义时给元素赋初值

extern和static数组元素自动初始化为 0 -> extern int a[10];或 static int a[10]; ->代表所有元素值都为0

语法:数据类型 数组名[常量表达式]={值,值…};

例如:int ary[10]={0,1,2,3,4,5,6,7,8,9};

规定:

元素之间用逗号隔开

可以只给部分元素赋值,剩余元素赋0值

给全部元素赋值时,可以不说明元素的个数。例如:int ary[]={0,1,2,3,4,5,6,7,8,9};

二、二维数组

定义(声明):

数据类型 数组名[常量表达式1][常量表达式2];

例如:int temp[4][3];

初始化:

inta[3][4]=

{

{1, 2, 3, 4},

{5, 6, 7, 8},

{9, 10, 11,12}

};

inta[3][4]={

1, 2, 3, 4,

5, 6, 7, 8,

9, 10, 11, 12};

inta[3][4]={

1, 2, 3, 4,

5, 6, 7, 8,

9,10 , 0, 0};

语法:

数组名[行下标][列下标]

三、字符数组

字符串常量

printf("Hello World!!!");

其中Hello World!!!就是字符串数组

区别->字符常量

例如:'a'

备注:

1、符号不同,字符常量用单引号,字符串常量用双引号

2、长度不同,字符常量有且只有一个字节,字符串常量可多个字节

3、字符串常量一'\0'结尾,例如:"Hello World!!!"之后隐藏了一个'\0'

(ps:'\0'称作结束标志)

字符数组 == 字符串变量

注意:

不能对数组做整体化赋值,只能在初始化的时候进行。

==的意义是:判断两个数组的地址值是否相等

strcmp的意义是:判断两个字符数组的值是否相等

例外:字符串可以通过系统函数进行整体操作

四、字符串的整体I/O操作

字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。

头文件 string.h

gets(ps:scanf)

功能:通过标准输入所获得的字符串

函数说明:char *gets(char *buffer);

其中,返回值:成功时返回输出缓冲区首地址,否则返回NULL

puts(ps:printf)

功能:用于在标准输出设备上显示字符串

函数说明:int puts(const char *string);

sprintf

功能:将其他数据类型转换成字符串类型并输出到指定字符串中.

函数说明:int sprintf( char *buffer, const char*format [, argument] ... );

注意:

以上几种字符串处理函数,应当再次强调:库函数并非C语言本身的组成部分,而是C编译系统为方便用户使用而提供的公共函数。不同的编译系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。

字符串拷贝函数strcpy格式:

strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2,

也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。

字符串比较函数strcmp格式:

strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

字符串1=字符串2,返回值 =0;

字符串1〉字符串2,返回值 〉0;

字符串1〈字符串2,返回值〈0。

假设计算机指定数组score中的元素从地址为1000的地方开始存放。那么,存放一个元素,计算机需要给该数组多少空间呢?

由于每个元素的数据类型为int,而一般来说,int占用4个字节,所以计算机需要为每一个元素分配4个字节的存储空间。如下图所示:元素score[0]占用了编号为1000, 1001, 1002, 1003共4个字节的内存空间。score[1]占用1004 - 1007号内存空间。其余元素依此类推。

20190727102551152.gif

当声明数组 int score[10]; 时,计算机就为数组预留10×4=40字节的存储空间,正式的说法是分配40字节的存储空间,此时空间里面没有存放东西。对于数组中的各元素,它们的存储空间是连续的,没有间断。因此,如果知道了某个元素的存放地址,就能准确获取其它元素的存放地址。

下图是对数组声明的一些解说:

20190727102639813.gif

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值