c++ - 将字符地址存储到整数指针

标签 c++ pointers

众所周知,指针的任务(在 C++ 中)是存储地址。地址的大小取决于计算机体系结构。 对于此示例,我们假设我们有一台 32 位机器,并且地址大小为 4 字节。现在,如果我们创建一个整数指针

int x=20;
int * ptr;
ptr = &x;    //  This is fine the address of x is of 4-Bytes

类似地,如果我们有一个字符 c

char c='a';
ptr = &c;      // This puts an error although address size of &c is still 4-Byte.

指针的任务是存储地址,那么为什么ptr不存储字符的地址。虽然整数和字符的地址都是4字节。没有地址的数据类型,那么它不应该将地址保存在ptr(指针)中吗?

最佳答案

问题不在于指针变量的大小错误。这个问题是类型安全的问题之一。您声明指针变量包含 int 的地址。这意味着当您尝试传递 char 的地址时,编译器会提示。它说,“你答应给我一个 int 的地址,但那是一个 char 的地址”。

编译器不会试图保护您免受存储地址问题的影响。正如您所注意到的,没有。编译器保护您免受的问题是当您取消引用地址时出现的问题。

关于c++ - 将字符地址存储到整数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699593/

相关文章:

c - 递增字符数组指针

c++ - 如何通过引用 C++ 传递动态数组

c++ - 在 Windows 上安装 GLo​​g

c++ - C++中的符号计算

c++ - 如何使用BulletPhysics SDK清除VS2015中的错误LNK2001?

c++ - 在 C++ 中以 block 的形式分割 jpeg 图像

C++ 指针。我想知道逻辑

c++ - move 后右值是否有效?

c++ - 将 C uint8_t 指针 + 大小组合转换为 C++ 迭代器

C chars 和 char* 指针的索引