1个回答
展开全部
int a[]; 数组的数组名本质上是个地址常量。示例程序如下:
#include<stdio.h>
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
int *p=a; //指针变量p指向数组a
int i;
printf("%x\n\n",a); //以16进制输出数组名a的地址值
for(i=0;i<10;i++)
printf("%x\n",&a[i]); //以16进制输出数组元素的地址值
putchar('\n');
for(i=0;i<10;i++)
printf("%-4d",a[i]); //输出数组的元素
return 0;
}
运行上面程序,你会发现输出的a的值与数组首元素的地址值是相同的,即a == &a[0],由于数组名是个地址常量,它是不能进行自加或自减运算的,也不能做算术运算。引用数组元素的方式:
(1)a[i];
(2)p[i]; //前提是p=a;即指针变量p已经指向数组a了
(3)*p或*(p+i)或*(p++)或*(p--) //变量是可以进行自加或自减运算的
指针变量存放的是地址值,即指针就是地址。
数组元素地址的表示方法:
(1)&a[i]; //&为取地址符
(2)&p[i]; //前提是p=a;即指针变量p已经指向数组a了
(3)p++或p--; //其中指针变量p表示当前指向的数组元素
(4)p+i或p-i
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询