C语言数组的取值与取地址的方式
#include <stdio.h>
void main(){
int iArray[] = {1,2,3};
int j;
for(j=0;j<3;j++){
//常见取值方式,类java
printf("iArray[%d]=%d\n",j,iArray[j]);
//常见取地址方式
printf("iArray[%d]内存地址=%#x\n",j,&iArray[j]);
//第二种取地址方式
printf("iArray[%d]内存地址=%#x\n",j,iArray + j);
//根据上面取地址方式,可以衍生出一种取值的方式,既然知道了地址
//那进行一次指针运算,就取到了对应的值。
printf("iArray[%d]=%d\n",j,*(iArray + j));
printf("iArray[%d]=%d\n",j,*(&iArray[j]));
printf("---------------\n");
}
}
有最常见的根据索引取值,与java相同。以及最常见的通过&符号取地址的值。
也有其他取地址的值得方式。值得注意的是,我们上边通过取出地址,直接通过 * 进行指针运算,便可以得到对应的值。
这里可以看到,我们并没有声明声明指针变量,便可以使用*,这也验证了我所说的 * 的出现,除了在定义指针变量的时候,其他情况下是作为一个动词出现的,它的出现就代表着是一次指针运算。