linux C数组与指针

数组:

把具有相同类型的若干变量按有序的形式组织起来,而这些同类数据元素的集合成为数组。

数组(Array)也是一种复合数据类型

数组count的4个元素的储存空间相邻。数组的成员可以是基本数据类型,也可以是复合数据类型。数组的元素通过下标来访问。

数组的下标可以是表达式,但表达式必须是整型的。

数组和结构体虽然有相似之处,但也有明显的不同:数组不能相互赋值或初始化,既然不能相互赋值,也就不能用数组类型作为函数的参数或者返回值。

一维数组:

数组中元素类型 数组名称[数组中元素个数]={元素0,元素1,....};

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

二维数组:
二维数组定义的一般形式是:
类型说明符 数组名[常量表达式1][常量表达式2]
其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。

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

不足3个自动补零,不允许前面或中间省略,如要省略,请手动加零。
数组a有3个元素,a[0]、a[1]和a[2]。每个元素也是一个数组,如a[0]是一个数组,它有3个元素a[0][0],a[0][1]这2个元素类型是int 分别为 1,2,同理数组a[1]的两个元素是3,4,数组a[2]两个元素是5和0。
数组中所有元素都是同一种类型,不存在统一数组中两种数据类型。
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。
例如对数组a[5][3]:
  • 按行分段赋值可写为:
    int a[5][3]={ {20,21,22}, {23,24,25}, {26,27,28}, {29,30,31}, {32,33,34} };
  • 按行连续赋值可写为:
    int a[5][3]={ 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34};
这两种赋初值的结果是完全相同的。
3) 数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。
字符型数组:
用来存放字符量的数组称为字符型数组。

指针:

所谓指针是用来指示一个内存地址的计算机语言的变量或中央处理器中的寄存器。指针一般出现在比较接近机器语言的语言中,指针一般指向一个函数或一个变量,在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数值。通俗地讲,把一个变量所在的内存单元的地址存在另一个内存单元中,保存地址的内存单位称为指针。
&是取地址运算符,例如:int *pi=&i;表示定义一个指向int型的指针变量pi并用i的地址来初化它。
指针的简单使用:

指针变量作为函数参数:
函数的参数不仅可以是整型,实型,字符型等,也可以是指针类型。
它的作用就是将一个变量的地址传送到另一个函数中。

指针与数组的使用:

指向指针的指针:
指针可以指向基本类型,也可以指向复合类型,因此也可以指向另外一个指针变量称为指向指针的指针。

猜你喜欢

转载自blog.csdn.net/qq_41851370/article/details/79702170