今天刚发现了c语言数组地址表示另一种不错的方法。这个方法跟指针结合起来,对于操作内存来说,非常方便。

 #include<stdio.h>

    int main(void)

    {

          int c[5] = {1,2,3,4,5};

          int *ptr = (int *)(&c +1);

          printf("%d %d\n", *(c +1), *(ptr-1));

    }

     上边的代码执行完毕后,会出现什么结果?

      *(c+1),应该很明显: 2;

      *(ptr-1),结果是: 5;

    分析:

      可以试一下一下代码:

     printf( “%p\n”, c+5 );

      printf("%p\n", &c[5]);

     printf("%p\n", &c+1);

     运行以上3条代码后,你就会惊奇的发现,它们输出的地址,完全一致。

     也就是说, &c+1表示了该数组最后一个元素的下一个地址。,而&c 与 c 或者 &c[0] 一致,都表示该数组的首地址。

     另外,&c+1 比c+5 和 &c[5]使用更方便: 它不必知道将要操作的数组的sizeof。    

      或许还有其他更简便的方法吧?

相关文章:

  • 2021-11-18
  • 2021-11-18
  • 2021-06-15
  • 2021-04-04
  • 2022-12-23
  • 2022-02-22
  • 2021-11-18
猜你喜欢
  • 2021-11-18
  • 2021-10-11
  • 2021-09-20
  • 2021-11-18
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案