C语言关于数组知识点总结

来源:互联网 发布:淘宝网商贷 编辑:程序博客网 时间:2024/06/06 02:16

数组

数组本身是一种构造数据类型,主要将相同类型的变量集合起来,用一个名称来代表。

数组也是一种自定义类型,使用之前要先定义,以便编译程序能分配内存空间供程序使用。

一维数组的定义

一维数组的定义形式:

数据类型  数组名[整形常量表达式]

(1)数据类型:规定数组的数据类型。

(2)数组名:表示数组的名称,命名规则和变量名相同,为任一合法的标识符,不要与其他变量名或关键字重名。

(3)整形常量表达式:必须用方括号括起来,规定了数组中包含元素的个数,其中包括常数和符号常量,不能包含变量。

说明:数组名后面的方括号内容不能为空,必须为整形常量表达式。(程序在编译时 要以此为数组分配存储空间的大小)

一位数组的初始化

一维数组的初始化形式:

数据类型 数组名[整型常量表达式]={常量表达式,常量表达式.......}

初始化的方式:

(1)在定义时对全部数组元素赋初值。

e.g  int x[5]={1,2,3,4,5}

(2)在定义时只给部分元素赋初值。

e.g  int x[5]={1,2}   后面三个元素自动默认为0

(3)只能给元素逐个赋值,不能给数组整体赋值。

e.g  “int x[5]={1,1,1,1,1};”   而不能写成  “int x[5]={1};”

一维数组的引用

一维数组的引用方式:

数组名[下标表达式]

在这里下表表达式可以是任何非负表达式,包括整型变量,整型常量,含有运算符的整型表达式,以及返回值为整数的函数调用。

引用数组元素时应注意以下几点:

(1)由于数组元素与同一类型的简单变量具有相同的地位和作用,因此对变量的任何操作都适用于数组元素。

(2)在引用数组元素时下表可以是整型常数或表达式,表达式内允许变量存在。

(3)引用数组元素时下表最大值不能越界。

(4)C语言中一般与逐个地使用下表变量来引用数组元素。

(5)

(6)数组是用下标访问的,数组的起始位置为0

(7)数组的长度可以计算。

e.g  int arr[10];

 int sz =sizeof(arr)/sizeof(arr[0]) ;

指针与数组

指针运算

指针只能用地址表达式表示,不能像普通整数那样指针进行任意运算。

指针的算术运算:

(1)指针与整数的加减运算:指针加减一个整数n,这种运算用于将指针当前所指向的位置向前或向后移动n个数据的位置。

(2)两个指针相减运算:这种运算只能在同一指针类型中进行,主要用于对数组的操作,结果是整数而不是指针。

(3)++ --运算:指针变量自增自减运算也是指针运算。指针加1运算后,指针指向下一个数据的起始位置。指针减1运算后,指针指向上一个数据的起始位置。

指针的关系运算:

指针的关系运算表示他们所指向的地址之间的关系。指针之间的四种关系运算:

<>:用来比较两只指针所指向的地址的大小关系

==!=:用来判断两指针是否指向同一地址,即是否指向同一数据。

指针不能与一般数值进行关系运算,但指针可以和零之间进行不等于或等于运算。

指向一位数组的指针

一维数组的地址

一维数组元素a[i]的地址可以写为&a[i]a+i,&a[i]使用下标形式表示的地址,a+i是用指针形式表示的地址,但是两个的结果相同。

一维数组指针的定义:

(1)用数组名作为首地址。 如:p=a;将数组a的起始地址赋给指针p,而不是将数组a的所有元素赋值给指针p

(2)用数组第0个元素的地址作为首地址。 如:p=&a[0];(*p的数据类型要与数组的数据类型一致)

利用指针引用一维数组元素:

方式有两种:

(1)下标法:a[i],   p[i]

(2)指针法:*p+i),*a+i

说明:

(1)使用下标法比较直观,使用指针法执行效率更高。

(2)使用指针引用数组下标不能越界。

通过指针访问数组元素时必须首先让该数组指针指向当前数组。

表达式

含义

&a[i],a+i,p+i

引用数组元素a[i]的地址

P[i],a[i],*(p+i),*(a+i)

引用数组元素a[i]

*p++,*(p++)

先取p指向的存储单元内容*p,再使p指向下一个存储单元

p++p=p+1

表示指向下一数组元素 即a[1]

*++p*++p

先使指针指向下一个存储单元,然后取改变后指针指向的存储单元内容*p

*p++

取指针p所指的存储单元内容作为表达式的结果值,然后使p所指对象的值加1,即*p=*p+1;指针的内容不变

 

 

 

二维数组的定义

二维数组定义的形式:

数据结构 数组名[整型常量表达式1][整形常量表达式2]

说明:

(1)与一位数组相同,下标只能是整数,并且从0开始

(2)计算机中二维数组是按行优先存储的,

二维数组的引用

C语言中规定不能引用整个数组,只能逐个引用数组元素。

二维数组的引用形式:

数组名 [下标表达式1][下标表达式2]

二维数组元素的初始化

二维数组元素初始化的四种形式:

(1)按行对二维数组赋初值,将每一行元素的初值用一对花括号括起来。

例如:int x[3][3]={{1,2,3},{2,3,4},{3,4,5}}

(2) 根据该数组的元素个数,吧初始化数据全部扩在一个花括号内,由二维数组按行存储的规则一次赋值给数组对应的元素。

例如:int x[3][3]={1,2,3,2,3,4,3,4,5};

(3) 对部分数组元素赋初值

例如:int x[3][3]={{1,2,3},{2,3,4},{3,4,5}};

(4) 在二维数组元素初始化是可以省略第一维的长度,但必须制定第二维的长度。第一维的长度有系统根据初始值表中的初值个数来确定。

例如:int x[][3]={1,2,3,2,3,4,3,4,5};

指向二维数组的指针

二维数组a的各种表示形式及其含义

表示形式

含义

a

数组a的起始地址

a+i&a[i]

i行的起始地址

*a+i),a[i]

i行第0列元素的起始地址

*a+i+j,a[i]+j,&a[i][j]

i行第j列元素的起始地址

**a+i+j,*(a[i]+j),a[i][j]

i行第j列元的值

 

指向二维数组元素的指针变量

(1)定义与二维数组相同类型的指针变量。

(2)在指针变量与要处理的数组元素之间建立关联。

(3)使用指针的运算就可以访问到任何一个数组元素,完成操作处理。

 

字符数组与字符串

 

字符数组的定义与操作

字符数组的定义

一维字符串数组的定义形式:

char 数组名[整型常量表达式];

二维字符串数组的定义形式:

char 数组名[整型常量表达式1][整型常量表达式2];

字符串数组的初始化

字符串数组允许在定义时做初始化赋值,通常方式是把字符逐个地赋给数组中的各元素。

字符数组的引用

字符数组中的每个元素都相当于一个字符变量,因此对一个数组元素的引用就是对一个字符变量的引用。

 

字符串

字符串常量:用双引号括起来的一串字符就是字符串常量,末尾有系统自动加的一个字符串结束标志\0.

字符数组与字符串的区别在于字符串结尾有\0’。

字符串的输入与输出

由于字符串是存储在字符数组中的,所以字符串的输入和输出实际就是字符数组的输入与输出。字符数组的输入与输出有两种方式:

(1)利用%c’格式符,逐个的输入或输出一个字符。

(2)利用%s’格式符,每次输入或输出一个字符串。

字符串操作处理函数

(1)字符串拷贝函数strcpy()一般形式为strcpy(str1,str2)

(2)字符串连接函数strcat()一般形式为strcat(str1,str2)

(3)字符串比较函数strcmp()一般形式为strcmp(str1,str2)比较字符的ASCII码值的大小

(4)字符串求长度函数strlen()一般形式为strlen(str)输出字符串实际长度,不包括‘\0

(5)字符串大小写字母转换函数strlwr()strupr()一般形式为strlwr(str)strupr(str)

 

 

指针与字符串

 指向字符串的首地址的指针变量乘坐字符串指针,实际上是字符类型的指针。

定义形式为:char *变量名

利用一个字符串指针访问字符串有两种方式:

(1)讲一个字符串的起始地址赋值给指针变量。

例如: char *p

char a[]=”abc”;

p=a;

(2) 将一个字符串常量赋值给指针变量

例如:char *p;

P=”abc”;

 

指针数组

  指针数组的定义方式:

数据类型 *数组名[整形常量表达式]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击