C语言数组总结

2023-09-13 08:12:18

数组使用葵花宝典

一维数组

一.数组的特点

1.数组是一组有序数据的集合

2.数组中的每一个元素都属于同一个数据类型

二.一维数组的定义

1.一般形式

一维数组的一般形式为

类型符  数组名[常量表达式];

Eg.int  a[10];          int a[3+4];

说明:(1)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。数组元素的下标是从0开始的。

三.数组的引用

一般形式:数组名[下标]

Eg.a[0]表示数组中下标为0的元素

四.一维数组的初始化

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

Eg.inta[10]={0,1,2,3,4,5,6,7,8,9};

2.可以只给数组中的一部分元素赋值

Eg.int a[10]={1,2,3};

3.再对全部数组元素赋初值时,由于数组的个数已经确定可以不必再指定数组的长度

Eg.inta[]={1,2,3,4,5,6,7,8,9,10}

4.如果相对数组的所有元素都置零,可以写成

Int a[10]={0};

五.一维数组使用和定义中所要注意的问题

char arr1[]=”abc”;该数组中包含了a,b,c三个元素

char arr2[3]={‘a’,’b’,’c’};该数组包含了’a’ , ’b’ , ’c’ , ’\0’四个元素

数组的长度计算:int sz=sizeof(arr)/sizeof(arr[0]);

六.一维数组在内存中的存储

随着数组的下标的增长,元素的地址也随之递增,因此说数组在内存中是连续存放的。

七.指向数组的指针

(1)数组元素的指针

所谓的数组元素的指针就是数组元素的地址

指针的特点:

指针类型决定了指针访问的权限

指针类型不同结果不同

引用数组元素可以使用下标法也可以用指针法,即通过只想数组元素的指针找到所需的元素

Eg.p=&arr[0];     p=arr;

以上这两句是等价的,说明了数组名不代表整个数组的地址,只代表数组首元素的地址。

P为数组首元素的地址,则p+1就是数组第二个元素的地址,那么p+i就是数组地i个元素的地址,这样就可以得到整个数组中每个元素的地址。

(2)指针表示数组元素的表示形式

①p+i和*(a+i)均表示a[i]的地址

②*(p+i)和*(a+i)都表示p+i和a+i所指对象的内容,它两是等价的。

③一些等价的表达形式

*arr、*(arr+0)、arr[0]等价,它们都表示数组中第一个元素

arr[i]=I、 *(arr+i)=i、*(i+arr)=i、i[arr]=i等价,其中arr 和i只是数组运算中的两个操作数

二维数组

一.二维数组定义的一般形式:类型说明符数组名[常量表达式][常量表达式]

Eg.  int  arr[3][4];

二.二维数组的引用

二维数组的下标形式为:数组名[下标][下标]

三.二维数组的初始化

(1)分行给而为数组赋初值

Eg.int  arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}

(2)将所有数据放在花括号里,按数组元素在内存中的排列顺序对各元素赋初值

Eg.int arr[3][4]={1,2,3,4,5,6,7,8,9,10,,11,12}

(3)可以对部分元素赋初值

Eg.int arr[3][4]={{0},{1},{9}};

Int arr[3][4]={{1},{0,6},{0,0,11}};

四.二维数组的使用注意事项

arr代表二维数组的首地址,也可以看作是二维数组第0行的首地址,a+1就代表第1行的首地址,同理a+i就代表第i行的首地址。

五.二维数组在内存中的储存

同一维数组一样二维数组在内存中的存储也是连续的。

六.引用指针对二维数组的访问

arr[0]与* (arr+0)等价,arr[1]与* (arr+1)等价,因此arr[i]+j就与*(arr+i)+j等价,它表示数组元素arr[i][j]的地址。

二维数组元素arr[i][j]可以表示成*(arr[i]+j)或*(*(arr+i)+j).表示第i行第j列的元素

七.总结:

sizeof(数组名)这里的数组明表示整个数组。

&(数组名),这里的数组明表示整个数组

除过以上两种情况之外数组名代表数组的首元素地址

  • 作者:user_lwjAug
  • 原文链接:https://blog.csdn.net/liuwenjuan_cherry/article/details/79815261
    更新时间:2023-09-13 08:12:18