对c语言中指针数组和数组指针的认识

1.数组:一批具有同名的同属性的数据就组成了一个数组。(“[ ]”也是数组类型的一部分)

    由此可知:(1)数组是一组有序数据的集合;(2)数组中的每一个元素都属于同一个数据类型。

 定义一维数组的一般形式:类型符  数组名【常量表达式】(数组也是一种类型 )

[多维数组也是一维数组,只是其内部的元素也是数组,如:二维数组的内部元素都是一维数组,三维数组其内部元素类型都是二维数组,以此类推,n维数组其内部元素都是n-1维数组]

2.指针:指针就是地址,一个变量的指针就是该变量的地址(即变量指针)。

3.指针变量:指针变量是变量,用来存放另一变量的地址

    (由此可知:指针是一个地址,而指针变量是存放地址的变量,我们通常所说的定义一个指针实质上是指定义了一个指针变量)

4.函数指针:就是函数的地址

5.函数指针数组:是一个数组,其内部元素为函数的地址

6.容易混淆的点:

(1)指针和数组没有关系

(2)判断指针数组和数组指针的方法:

由优先级决定,例:

int *p[10] //指针数组    ,因为[ ]的优先级高于 * 的优先级

(int *p)[10] //数组指针 ,因为()的优先级高于[ ] 的优先级

(3)数组在传参时会发生降维,即数组在进行传参时会降维成指向其内部元素类型的指针

(4)数组名只有在sizeof(数组名)和“&(数组名)”这两种情况下表示整个数组,其他情况下均表示数组首元素的地址

(5)指针加1加的是其所指向类型的大小;

         例:a+1指的是加的整个数组的长度

               a[0]+1指的是数组里边第二个元素

(6)一般情况下,两个指针指向同一数组/字符串,通常代表两指针之间的元素的个数。

猜你喜欢

转载自blog.csdn.net/Atalanta1/article/details/80218210