美文网首页
【C】语言·指针与数组

【C】语言·指针与数组

作者: emmet7life | 来源:发表于2018-08-23 09:06 被阅读9次
    // 定义一个int类型的数组
    int a[4] = {1, 2, 3, 4};
    
    // 定义一个int类型的指针,并指向数组的第0个元素
    int *p = a;
    
    int i;
    for (i = 0; i < 4; i++) {
        // 利用指针运算符*取出数组元素的值
        int value = *(p+i);
        
        printf("a[%d] = %d \n", i, value);
    }
    

    p是指针,a是一个数组

    1> 如果p指向了一个数组元素,则p+1表示指向数组该元素的下一个元素。比如,假设p = &a[0],则p+1表示a[1]的地址

    2> 对于不同类型的数组元素,p值的改变是不同的。如果数组元素为int类型,p+1代表着p的值加上2(16位编译器环境下)

    3> 如果p的初值是&a[0],那么

    • p+i和a+i都可以表示元素a[i]的地址,它们都指向数组的第i个元素。a代表数组首地址,a+i也是地址,它的计算方法与p+i相同
    • *(p+i)和*(a+i)都表示数组元素a[i]
    • 虽然p+i和a+i都指向数组的第i个元素,但二者使用时还是有区别的。因为作为指针变量的p可以改变自身值,如p++,使p的值自增。而数组名a是一个代表数组首地址的常量,它的值是不能改变的,即a++是不合法的

    4> 引用一个数组元素可以有两种方法:
    下标法: 如a[i]
    指针法: 如*(p+i) 或 *(a+i)

    相关文章

      网友评论

          本文标题:【C】语言·指针与数组

          本文链接:https://www.haomeiwen.com/subject/bmdshftx.html