美文网首页
二、常量指针

二、常量指针

作者: faterman | 来源:发表于2018-01-24 17:26 被阅读4次
题目:请写出以下代码输出

 int a[5] = {1, 2, 3, 4, 5};
 int *ptr = (int *)(&a + 1);
 printf("%d, %d", *(a + 1), *(ptr + 1)); // 2,随机值

输出解释:
a代表有5个元素的数组的首地址,a[5]的元素分别是1,2,3,4,5。接下来,a + 1表示数据首地址加1,那么就是a[1],也就是对应于值为2.但是,这里是&a + 1,因为a代表的是整个数组,它的空间大小为5 * sizeof(int),因此&a + 1就是a+5。a是个常量指针,指向当前数组的首地址,指针+1就是移动sizeof(int)个字节。
因此,ptr是指向int 类型的指针,而ptr指向的就是a + 5,那么ptr + 1也相当于a + 6,所以最后的(ptr + 1)就是一个随机值了。而*(ptr – 1)就相当于a + 4,对应的值就是5。

相关文章

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • 二、常量指针

    输出解释:a代表有5个元素的数组的首地址,a[5]的元素分别是1,2,3,4,5。接下来,a + 1表示数据首地址...

  • 2019-05-22 常量与指针,数组与指针

    常量与指针,数组与指针 常量与指针 常量与指针的关系很容易弄混,为此我专门在此记录一下。 常量指针 指向常量的指针...

  • const 相关

    1.常量指针与指针常量 常量指针是针对于普通指针而言,语义在于指向常量的指针;定义: const *...

  • 指针,引用和常量

    常量指针和指针常量 常量指针是指向常量的指针,如:const int* p其中p是一个指针,指向了一个常量,也就是...

  • 5.const与指针

    1.const修饰指针-常量指针 2.const修饰常量-指针常量 3.const修饰指针和常量 代码如下

  • 指针常量、常量指针

    一个数组int b[]就相当于一个int *const p,常量指针值不变,所以两个数组不能赋值 int i=10...

  • c++ const

    const 可修饰指针常量,可修饰常量指针,可以既修饰指针,也修饰常量常量指针:int a=10;int b=20...

  • C++指针常量与常量指针

    指针常量:指针本身是常量,指针的值不能改变常量指针:指针指向的值是“常量”(打引号表示的是不能通过指针改变指向的值...

  • 常量指针、指针常量、指向常量的指针常量

    指针常量 p是指针,而指针也就是一个变量而已,如果说它不普通那也只是因为它是一个指针变量。变量p前面紧挨着cons...

网友评论

      本文标题:二、常量指针

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