C++ 指针的内存地址和指向数组的内存地址如何相同?
C++ How pointer's memory address and pointed array's memory address can be same?
在此代码中,ar
和&ar
相同。但是ar
不就是一个指向ar[0]
的常量指针吗?那么我想写cout<<ar;
应该给ar[0]
的记忆地址,而写cout<<&ar;
应该给它自己的记忆地址,所以它们应该是不同的。它们怎么一样?有人说ar
不是指针,如果它不是指向ar[0]
的指针,那么cout<<*ar
等于ar[0]
的值如何?
int ar[3] = {1,2,3};
cout<<ar<<endl;
cout<<&ar<<endl;
我的意思是在这个代码中,&a
和&b
是不同的,这是有道理的。
int a = 5;
int* b = &a;
cout<<&a<<endl;
cout<<&b<<endl;
int ar[3] = {1,2,3};
ar
这里是一个"数组指示符",它自动转换为指向第一个数组元素的指针。ar
相当于&a[0]
。这样ar
就有一个类型int *
&ar
ia 指向整个数组的指针,类型为int (*)[3]
以下代码有效(指针兼容)
int *par0 = ar;
int (*par)[3] = &ar;
尽管a
和&a
具有不同的类型,但它们具有相同的值 — 第一个数组元素和整个数组的地址是相同的。
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- CUDA:统一内存和指针地址的更改
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 使用内存地址访问结构的属性值
- 如何读取特定地址的进程内存?
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 如果 const 不分配内存,为什么我可以获取 const 的地址?
- 将布局映射到内存地址
- 为什么同一个变量的内存地址不同?
- LLVM 传递以在特定地址分配内存
- 无法将内存地址转换为值
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 给定特定内存地址的数组的动态内存分配
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 获取 R 数据帧的内存地址
- 如何配置bazel以运行地址/内存清理器?
- 存储 std::list 元素的地址;内存
- 确定库的地址内存