C标准允许指向不同类型的指针具有不同的大小,例如sizeof(char*) != sizeof(int*)是允许的.但是,它确实要求如果指针转换为a void*然后转换回其原始类型,则必须将其与原始值进行比较.因此,从逻辑上讲,sizeof(void*) >= sizeof(T*)对于所有类型T,正确吗?
在当今使用的大多数常见平台上(x86,PPC,ARM和64位变体等),所有指针的大小都等于本机寄存器大小(4或8字节),而不管指向的类型.是否存在任何深奥或嵌入式平台,其中指向不同类型的指针可能具有不同的大小?我特别询问数据指针,虽然我也有兴趣知道是否存在函数指针具有异常大小的平台.
我绝对不会问C++的指向成员的指针和指向成员的指针函数.这些在常见平台上具有不寻常的大小,甚至可以在一个平台内变化,具体取决于指针类的属性(非多态,单继承,多继承,虚继承或不完整类型).
是char*,int*,long*甚至是long long*同样大小的(在给定的平台)?
我发现很难理解指针变量大小C所依赖的因素.我检查了一些参考文献,我到目前为止获得的唯一信息是pointer尺寸取决于处理器架构.我想知道以下细节
x bits那么0 to 2^(X)-1地址位置的数量应该在那里.我正在丢失跟踪,同时关联地址位置的数量和程序可用的实际内存量.