首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在取消引用指向数组的指针时,我得到的地址与指向数组的指针的地址相同

在取消引用指向数组的指针时,得到的地址与指向数组的指针的地址相同,这是因为指针本身存储的是数组的首地址。

指针是一个变量,它存储了另一个变量的内存地址。在C语言中,数组名本身就是一个指向数组首元素的指针。当我们取消引用指向数组的指针时,实际上是获取该指针所指向的内存地址上的值。

假设有一个数组arr,其首地址为ptr。当我们使用*ptr来取消引用指向数组的指针时,得到的是数组的首元素的值。而当我们使用ptr来获取指针的地址时,得到的是数组的首地址,即ptr的值。

这种情况下,取消引用指向数组的指针得到的地址与指向数组的指针的地址相同,因为它们指向的是同一个内存地址。

这种操作在访问数组元素时非常常见,可以通过指针来遍历数组,或者通过指针进行数组元素的读取和修改操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 面试总结-C++

    堆、栈、自由存储区、全局/静态存储区、常量存储区 自由存储区存储malloc申请的内存 (1)从静态存储区域分配 。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如 全局变量, static 变量 。 (2)在栈上创建 。在执行函数时, 函数内局部变量的存储单元都可以在栈上创建 ,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 (3)从堆上分配 , 亦称动态内存分配 。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

    01

    指针和数组笔试题解析

    1、a代表了整个数组的大小,四个整形的元素,大小一共16字节。 2、a+0代表的第一个元素的地址,我们可以知道在32位系统下占用4个字节。 3、*a代表的是解引用后的数组首元素,大小是一个整形,4个字节大小。 4、a+1代表的是第二个元素的地址,占用4个字节大小。 5、a[ 1 ] 代表的是数组第二个元素,一个整形4个字节大小。 6、&a代表整个数组的地址,但是地址仍然是四个字节大小。 7、*&a先取地址再解引用,就等于是a,所以代表整个数组大小,16字节。 8、&a+1中&a代表整个数组的地址,+1跳过整个数组,但是还是一地址,仍然是4个字节。 9、&a [ 0 ] 是代表了第一数组元素的地址,4个字节。 10、&a [ 0 ] + 1 代表的第一个元素的地址+1,也就是第二元素的地址,4个字节大小。 知识点:地址不分贵贱,都是统一的大小,在32位系统下,都是4个字节大小。               &数组名是代表了整个数组的地址。                *& 一个取地址一个解引用就相当于抵消了。

    04
    领券