当前位置:   article > 正文

【C语言】数组和指针相关 * 和 & 总结大全_数组&

数组&

总结大全

  • a:数组首元素地址
  • &a:数组首元素的地址
  • &a[0]:数组首元素的地址
  • *a:数组首元素的值
  • *(a+n):数组第(n+1)个元素(index为n的元素)的值
  • a+n:数组首元素的地址加上n个元素的字节数
  • &a+n:数组首元素的地址加上n倍数组的字节数
  • *(&a+1):数组首元素的地址加上整个数组的字节数,和(&a+1)一样,相当于数组末尾地址+1
  • *(&a+1)-n:数组倒数第n个元素的地址
  • *(*(&a+1)-n):数组倒数第n个元素的值

验证代码

#include <stdio.h>
int main()
{
    int a[8] = {1, 2, 4, 8, 16, 32, 64, 128};
    // TEST1
    printf("测试1:\n%d\n", a);
    // TEST2
    printf("测试2:\n%d\n", *a);
    // TEST3
    printf("测试3:\n%d\n", &a[0]);
    // TEST4
    printf("测试4:\n%d\n", &a);
    // TEST5
    printf("测试5:\n%d\n%d\n", *(a+1), *(a+3));
    // TEST6
    printf("测试6:\n%d\n%d\n", (a+2), (a+5));
    // TEST7
    printf("测试7:\n%d\n%d\n%d\n", (&a+1), (&a+2), (&a+3));
    // TEST8
    printf("测试8:\n%d\n", *(&a+1));
    // TEST9
    printf("测试9:\n%d\n%d\n%d\n", *(&a + 1)-1, *(&a + 1)-2, *(&a + 1)-3);
    // TEST10
    printf("测试10:\n%d\n", *(*(&a + 1)-1));
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

测试结果

测试16422016
测试21
测试36422016
测试46422016
测试52
8
测试66422024
6422036
测试76422048
6422080
6422112
测试86422048
测试96422044
6422040
6422036
测试10128
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/392539
推荐阅读
相关标签
  

闽ICP备14008679号