C 指针运算 指针访问数组

#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;
}
原文地址:https://www.cnblogs.com/hemage/p/13255561.html