c语言数组知识点总结(c语言中数组的定义和使用)

admin 511 0

大家好,今天小编来为大家解答以下的问题,关于c语言数组知识点总结,c语言中数组的定义和使用这个很多人还不知道,现在让我们一起来看看吧!

一、c语言全面解析指针,十个知识点整理

1.若有代码,int a=10,*p;p是指针:也是一个变量,且是一个只能用来存放地址的变量。

2.若有代码,int a=10,*p;p=&a;当执行了上面的代码,会说“p指向了a”,其实就是“p指针变量存放了a的地址”。

3.两个*的区别,有如下代码:inta=10,*p;//该处的*说明p是一个指针变量用来存放地址p=&a;*p=*p+1;//该处的*表示p所指的变量中的值即a的值10。

总结:变量定义时的*说明该变量是一个指针,调用语句中的*表示指针指向的变量中的值。[此处是比较容易混淆的]。

4.int a=10,*p;p=&a;则:*p=*p+1;//等价:*p+=1;(0)++++(*p);表示的内容相同,都是p所指变量的值+1。

5.*p++和(*p)++的区别是:等价于*(p++),先获取 p当前所指元素的值,然后p指针+1(p指针向后移动一个单元,一般用在数组中,普通变量会越界);后者仅仅是p所指变量的值+1。

6.定义变量时,一个*说明该变量是指针,两个*说明该变量是指向指针的指针(存放的是指针变量的地址)。int a=10,*p,**q;p=&a;//p指向a,*p的结果是10,q=&p;//q指向p,* q的结果是p的地址值,**G的结果才是10。

7.如果调用函数传递的是地址,那么被调函数中形参就需要使用指针接收,在函数中对指针所指变量值的改变,会影响到调用函数中的变量值。

8.一维数组名和指针的区别,有定义:int a[10],*p;

p=a;//合法,因为,一维数组名存的是数组首地址,这样使 p指向了a首地址,也就是第一个元素的地址。

a++;//不合法,因为a是一个地址常量,开辟了就不能再修改了,一切给数组名字赋值的操作都是非法的。

p++://合法,因为p是一个指针,p++表示从当前向后移动了一个位置。

对于上面的定义,a[i]、*(ati)、*(p+i)、p[]都是合法,都是取下标为i的元素值。所以: p++;是使指针向后移动,(*p)十+是当前所指变量的值内容+1。

9.若有定义:int a[3][22],*p[3],iJ;*p[3]中[优先级[高于*,说明p是一个数组名,前面的*说明该数组中每个元素都用来存放指针,这叫指针数组。如果p和a产生联系,则只能通过逐个赋值的方式完成,即: for(i=0;i<3;i++)p[]=a[;//合法,因为a[]是二维数组中每行的首地址,所以可以存放到p数组中。

但是 p=a;是非法的,因为a是地址,p是数组的名字,并不是指针名下面获取数组元素的方式都是合法的:*(p[i]+j)*(*(p+i)+j)(*(p+i))[j]。

10.若自定义函数的实参是一维数组名,则该函数的首部可以写成: fun(int al) fun(int a[M]) fun(int*a) M表示长度,若有自定义函数的实参是二维数组名,则该函数的首部可以写成: fun(int(*a)[N])。

fun(int al[N]) fun(int a[M][NJ) M表示行数,N表示列数,若有指针数组作为fun函数的实参,则该函数的首部可以写成:fun(int*a[M]) fun(int*al) fun(int**a)。

二、c语言数组规则

1.1一维数组的定义、初始化和引用

(1)数组名的命名方法与变量名相同,遵循标识符命名规则;

(2)数组是用方括号括起来的常量表达式,不能用圆括号;

(3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1;

(4)常量表达式中可以包括常量和符号常量,不能包括变量。

可以用赋值语句或输入语句使数组中的元素得到值,但要占用运行时间。可以使数组在运行之前初始化,即在编译阶段使之得到初值。

2.对数组初始化可以用以下方法实现:

(1)在定义数组时对数组元素赋以初值。如:

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

经过上面的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。

(2)初始化时可以只对一部分元素赋初值。例如:

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

定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。

(3)如果想使一个数组的元素值全部为0,可以用下面的方法:

static int a[10]={0,0,0,0,0,0,0,0,0,0};

如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。

(4)在对全部数组元素赋初值时,可以不指定数组长度。

C语言规定不能一次引用整个数组,引用时只能逐个元素引用,数组元素的表示形式为:

下标可以是整型常量或整型表达式。如:

三、c语言 关于数组 我们需要注意什么

1、元素组成了数组,数组的定义为,

2、其中 int为类型,即整型(还有字符型 char和float实型等)

3、a为数组名 []为下标符号,里面的数字常量为数组的第几号成员元素。

4、例如 a[0]为数组a[10]的第一号成员元素。

5、这里有点要注意的是,数组元素下标值是从0开始的,即你定义a[10],

6、则他的成员数为a[0]到a[9].千万不要把a[10]也当成了他的成员了。

7、至于元素,例如你定义一个变量 int a;

8、那么你可以让 a成为数组 a[10]的一个元素。如果你要用到很多变量的话,

9、总不能定义N个变量吧!这个时候你就可以用数组了来表示哪些个变量了!

10、但是定义数组的时候一定要定义他的下标值,即a[10]中[]内必须为一个常量。

四、C语言数组学习有什么心得

1、数组传递给函数,模拟传引用调用的方式自动把数组传递给函数,意味着被调用的函数能够修改原是数组的元素值,

modify(hourly,24);//函数调用,数组名即数组第一个元素的地址

注意:为了防止函数中修改数组的值,采用类型限定符const做前缀,数组元素成为函数体中的常量,函数体中任何修改数组元素的企图都会导致编译错误,

e.g.void modify(const int [],int);

字符串读取:scanf("%s",string1);//不用地址符号&,因为数组名是数组的起始地址

字符串显示:printf("%s",string1);

charstring1[]={'g','o','o','d','\0','g','i','r','l','\0'};//上下声明等价

注意:'空字符'='\0',终止符,用printf("%s",string1)输出,得到good girl。

e.g.int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

a[0],*(a+0),*a第0行第0列元素地址2000

a[1],*(a+1)第1行第0列元素地址2008

a[1]+2,*(a+1)+2,&a[1][2]第1行第2列元素地址2012

*(a[1]+2),*(*(a+1)+2),a[1][2]第1行第2列元素的值7

在二维数组中,a+i=a[i]=*(a+i)=&a[i]=&a[i][0],即他们的的地址值是想等的。

五、C语言中,数组都有什么用

数组就是描述一系列数的集合,在电脑运算中经常使用循环运算,而循环运算的数据则主要是数组提供的

数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构。它的作用主要体现在对同一类型的数据进行存储。(要是int型,全都是int型,要是char型,全都是char型),不可以出现其他类型。对数据的访问是具名访问,可是直接读出数据中某一块的数据,例如

array[3]等于3.这里需要注意的是:数组的下标是从0开始的。如果你想访问array[5],会提示错误,因为已经越界了。提取数据比较方便,因为数组在内存中是连续存储数据的,好找。

随便说句,数组可以当指针用,但它绝不是指针。

六、C语言中如何定义数组

1、C语言中,同变量一样;数组也必须先定义后使用。

2、类型标识符数组名[常量表达式];例如int a[10];其中a为地址常量。

3、如变量的定义一样,int a;double a;float a等;数组的定义只是把后面的变量名改为数组名而已。

4、int a[10]就是定义了一个数组名为a的数组;此数组有10个元素。其中各元素从a[0]到a[9];并没有a[10]元素。下面列举一个。

5、常量表达式可以包括字面常量和符号常量;但不能包含变量。例如对下面定义是错误的

6、其中对二维及多位数组定义可以类推

7、int a[x][y][z][...]其中 x,y,z为数字。

文章分享结束,c语言数组知识点总结和c语言中数组的定义和使用的答案你都知道了吗?欢迎再次光临本站哦!