指针和工会中的数组的不同地址
Different addresses of a pointer and an array in a union
我想获取数组的第一个元素的地址。此数组与指针结合。
代码:
#include <stdio.h>
#include <assert.h>
#include <stdint.h>
union l_array_0_uint8_t {
uint8_t *pnt;
uint8_t array[8];
};
int main()
{
union l_array_0_uint8_t u;
uint8_t* aa = &(u.array[0]);
uint8_t* pa = u.pnt;
printf("array inner: %pn", aa);
printf("Pointer inner: %pn", pa);
return 0;
}
结果:
array inner: 0x7ffdad959050
Pointer inner: 0x7ffdad959140
为什么这两个地址有所不同?我希望数组和指针具有相同的地址。
表达式u.pnt
的结果不是联合成员u.pnt
的地址。这是成员的价值。但是该成员的价值不确定,因此您的程序具有不确定的行为。
要获取地址,您可以使用操作员(就像您接收其他成员的地址时一样):
uint8_t** pa = &u.pnt;
相关文章:
- 将数组的地址分配给变量并删除
- 从 C++ 中的函数返回数组地址问题
- 打印字符数组地址的正确方法
- 字符数组地址和整数数组地址
- C++返回静态数组地址的函数
- C++ 在 64 位平台中传递字符数组地址
- 获取字符数组地址,然后转换为指针字符
- 如何指向实际元素而不仅仅是数组地址
- 如何使用数组地址反转数组
- 链表数组 – 地址簿
- 数组地址的地址
- 缺少存储数组地址的内存
- 将指针数组地址传递给函数并更新地址中的数据
- 通过复制将数组地址传递给匿名函数失败
- 数组地址不可见
- 不了解示例中的行为 - strcpy() 和返回本地数组地址的函数
- 保存数组地址的指针的地址是相同的
- 动态数组地址
- 在C++(代码块)中显示数组地址
- C++ 将数组地址分配给指针