c/c++语言开发共享c:空隙大小*

我对C中的void *指针有点困惑。特别是在读完这个问题之后: sizeof(某些指针)是否总是等于4? ,一个人说没有保证sizeof(int *)== sizeof(double *)

我的问题是:是否有sizeof(void *)> = sizeof(任何其他指针类型)的保证? 换句话说,我是否可以始终为void *指针分配some_type *指针,然后将其作为some_type *返回?

    只有数据指针。 void *可以保存任何数据指针,但不能保存函数指针。

    这是一个C FAQ 。

    void *只能保证保存对象(即数据)指针; 将函数指针转换为void *类型是不可移植的。 (在某些机器上,函数地址可能非常大,比任何数据指针都大。)

    至于第一部分,是的,不同的类型可以有不同大小的指针 :

    存储在指针中的值是存储器的地址。 如果您使用的是32位系统,那么指向内存的指针将长达32位(或4个字节)。 如果您使用的是64位系统,那么指向内存的指针将长达64位(或8个字节)。

    保存内存中位置的数据大小与内存中该位置表示的数据大小无关。

    至于char *double * char *区别, char *可以指向任何位置,但double *必须指向8字节边界的某些内容。 必须根据您所处理的处理器规则对齐较大的数据。 因此,指向小数据的指针通常与指向大数据的指针不兼容(例如,您不应该将指针指向char *地址); 但是你要向另一个方向保存(例如,你可以将char *指针指向double *地址)。

    需要了解更多c/c++开发分享c:空隙大小*,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享c:空隙大小*相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980364.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐