数组
数组的基地址是在内存中存储数据的起始位置 数组名本身是一个地址即指针
int a[10];
int *p;
- a是一个地址
数组与指针的区别
在访问内存上数组与指针的区别:
- 指针是以地址作为值的变量
- 数组名的值是一个特殊的固定值,可以看做指针常量,p是一个指针变量。
p=a; <==> p=&a[0];
p=a+1;合法; a++;a=a+1;非法
指针运算
- 指针每次加一减一是加上或减去指向的那个变量的数据类型的长度
- 两个指针相减是之间数组元素个数
#include <stdio.h>
int main(void)
{
double a[2];
double *p,*q;
p=a;
q=a+1;
printf("%d\n",q-p);\\计算指针p和q之间元素个数
printf("%d\n",(int)q-(int)p);\\计算指针p和q之间字节数
return 0;
}
数组名作为函数的参数
数组的形参实际上是一个指针;参数传递时,主函数传递数组a的基地址。