指针访问一维数组

1. 实验现象
2. 结果讨论

a是数组第一个元素的地址,&a是整个数组的地址,虽然二者值相等,但是在加1后的地址变化不一样,注意上图⬆️

3. 实验代码
  1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5     int a[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
  6     int i;
  7 
  8     printf("-----------------------------------\n");
  9     printf("int a[10] : ");
 10     for (i = 0; i < 10; i++)
 11     {
 12         printf("%d ",a[i]);
 13     }
 14     printf("\n");
 15     printf("-----------------------------------\n");
 16     printf("a         : %p\n", a);
 17     printf("a+1       : %p\n", a+1);
 18     printf("*a        : %d\n", *a);
 19     printf("*(a+1)    : %d\n", *(a+1));
 20     //printf("*a+1      : %d\n", *a+1);   //常数加1 为10
 21     printf("-----------------------------------\n");
 22     printf("&a        : %p\n", &a);
 23     printf("&a+1      : %p\n", &a+1);
 24     //printf("&(a+1)    : %p\n", &(a+1)); //rvalue error 无法读取(如:&123)
 25     //int *b; //定义一个新的指针变量,存储a+1,在&(a+1)即可。
 26     //b = a + 1;
 27     //printf("&(a+1)    : %p\n", &b); 
 28     printf("**(&a)    : %d\n", **(&a));
 29     printf("**(&a+1)  : %d\n", **(&a+1));
 30     //printf("**(&(a+1)): %d\n", **(&(a+1)));  //rvalue error 无法读取
 31     printf("-----------------------------------\n");
 32     printf("&a[0]     : %p\n", &a[0]);
 33     printf("&a[0]+1   : %p\n", &a[0]+1);
 34     printf("*(&a[0])  : %d\n", *(&a[0]));
 35     printf("*(&a[0]+1): %d\n", *(&a[0]+1));
 36     printf("-----------------------------------\n");
 37     return 0;
 38 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值