我对指针的了解是,它用于指向特定位置(内存地址),那么为什么我们甚至需要与我们试图指向的变量的指针数据类型相同的指针数据类型。假设我创建了一个整数变量,那么我必须创建一个指向整数的指针来指向它。那么为什么我不能创建一个空指针或浮点指针来指向存储在该整数变量中的值!我错过了一些指针的概念吗?
那么为什么我不能创建一个空指针 [...] 来指向存储在该整数变量中的值
你可以这样做,没问题:
int x = 10;
double y = 0.4;
void* v = &x;
v = &y;
但是现在想象一个这样的函数:
void print(void* value)
这个函数如何知道如何处理指针位置的内存?是整数吗?还是浮点数?一个float
或一个double
?也许它是一个巨大的struct
或一组值?您必须知道这一点才能正确取消引用指针(即读取内存),因此只有为指向不同类型的指针使用不同的指针类型才有意义:
void print(int* value)
这个函数知道指针指向 an int
,所以它可以愉快地取消引用它以获得一个int
值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句