-
指针和数组的区别
指针是左值(什么是 lvalue,什么是 rvalue?);
而数组名只是一个地址常量,它不可以被修改,所以数组名不是左值。 -
指针数组
数组里的元素可以使用任何数据类型,可以装整型变量,浮点型变量,字符型变量,也可以装地址
int *a[5]={&b,&c,&d,&e,&f};
int表示数组里的元素(地址类型)指向整型变量
星号表示数组里的元素为指针,即地址信息。所以把这个数组叫做地址数组也没毛病
//指针数组应用
#include<stdio.h>
int main (void)
{
int b=5,
c=8,
d=25,
e=0,
f=213;
int *a[5]={&b,&c,&d,&e,&f};//a[0]==&b
*a[3]=18;//a[3]是地址,对地址操作要用*内存操作符
printf("e=%d\n",e);
system("pause");
return 0;
}
int *p1[5];
上边是一个指针数组,我们可以从运算符的优先级和结合性进行分析:
数组下标的优先级要比取值运算符的优先级高,所以先入为主,p1 被定义为具有 5 个元素的数组。那么数组元素的类型呢?是整型吗?显然不是,因为还有一个星号,所以它们应该是指向整型变量的指针。</