c++ - 为什么变量指针包含相同数据类型的地址?

标签 c++ c pointers memory memory-address

指针声明的一般语法:data-type *pointer_name;

指针是一个变量,其值是另一个变量的地址,即内存位置的直接地址。与任何变量或常量一样,您必须先声明一个指针,然后才能使用它来存储任何变量地址。指针的数据类型必须与指针指向的变量相同。

为什么指针变量应该包含相同数据类型的变量的地址很重要?

既然指针与另一个变量的值无关,为什么整型指针不能有float数据类型变量的地址呢?

正确的形式:

int a = 10 ;

int *ptr = &a ;

错误,类型不匹配

float a;

int *ptr; ptr = &a;

最佳答案

因为当你增加一个指针时

ptr++;

它将指向一个地址,该地址是数据类型大小的 1 倍。如果你这样做了

ptr+=2;

并且数据类型占用 4 个字节,如果指针声明为

float *ptr;

指针将增加 8 个字节的位置。

关于c++ - 为什么变量指针包含相同数据类型的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619135/

相关文章:

c++ - 使用模板生成静态查找表

函数 void 的编译错误

c - For 循环未按预期工作

c++ - C++ 中的 Sizeof 以及如何计算指针长度?

c++ - 将指针容器转换为智能指针?

c++ - 如何在NetBeans(Linux)中链接库?

c++ - 编辑距离递归算法——Skiena

c++ - 全局新运算符调用语法

c++ - C/C++ : Pointer on Pointer on structure

比较 C 中的字符会引发错误