数组名与指针

来源:互联网 发布:09淘宝店 编辑:程序博客网 时间:2022/01/24 06:01

在C语言学习中,很多人容易搞不清楚指针和数组名的关系。

因为经常我们操作数组a[10]的时候,我们可以使用a[1]获取到第二个值,也可以通过 *(a+1)获取到第二个值。

我们又经常听说:"数组名a实际是一个指向第一个元素的指针,它保存了第一个元素的地址。" 这让很多人感觉数组名就是一个指针。

我想这应该对大家是一个很大的误导,不要说数组名就是一个指针,虽然它具有了指针的某些特性,但一定要记住数组名和指针绝不可以划等号,数组名绝对不是指针,数组名具有了一些指针不具有的特性。

数组名就是数组名,指针是指针,数组名不等于指针。

在以下两种情况下,数组名和指针有很大区别。

int a[10]; //定义一个数组

int *p = NULL;   //定义一个整型指针

1. sizeof(a)的值是数组的大小,sizeof(p)的值 是指针所占字节的个数

2.对数组名和指针“&”操作: &a 获取到的是指向数组的指针, &p获取到的是指向指针的指针。