#include<stdio.h>
int main(void)
{
//指针的运算
int * p;
p = NULL; //表示是个空指针
p++; //p = p + 1,p的值是0加上sizeof(int)*1
printf("加运算:%d
",p); //结果是4,因为int类型占用4个字节
p = (int*)10;
p = p - 2; //10 - sizeof(int) * 2 ====>10 - 4*2 = 2
printf("减运算:%d
",p);
//指针访问数组
int li[10] = {1,2,3,4,5,6,7,8,9,0};
int * pi;
pi = li; //数组名其实就是个指针,存的是数组的起始地址,也就是第一个元素的地址
for(int i = 0;i < 10; i++)
{
printf("%d,%d,%d
", &li[i], li[i],pi[i]); //下标法,传统方式
}
for(int i = 0;i < 10; i++)
{
printf("%d,%d
", pi + i, *(pi + i)); //通过指针计算元素地址,然后取值
}
for(; pi < (li+10); pi++)
{
printf("指针指向当前数组元素:%d,%d
",pi,*pi); //直接指向当前数组元素
}
printf("%d,%d",pi,*pi); //注意的是,因为上面例子是通过指针运算取值,结果现在的指针pi已经不是指向原先数组的地址了
return 0;
}