c/c++语言开发共享C编程:将int指针转换为int?

假设我有一个名为ptr的void *。 我应该如何使用ptr来存储int? 写作是否足够

ptr = (void *)5; 

如果我想保存5号? 或者我必须使用malloc来保存它?

    你将5转换为void 指针并将其分配给ptr

    现在ptr指向内存地址0x5

    如果这实际上是你想要做的……好吧,是的,这是有效的。 你……可能不想这样做。

    当你说“存储一个int”我猜你的意思是你想要将整数值5存储在void*指向的内存中。 只要有足够的内存分配( sizeof(int) )你就可以通过强制转换来实现…

     void *ptr = malloc(sizeof(int)); *((int*)ptr) = 5; printf("%dn",*((int*)ptr)); 

    这将适用于sizeof(void*) >= sizeof(int)所有平台/环境,这可能是其中的大多数,但我认为不是全部。 你不应该依赖它。

    如果可以,你应该使用工会代替:

     union { void *ptr; int i; }; 

    然后你可以确定有适合任何类型数据的空间,你不需要演员表。 (当它的指针中有非指针数据时,不要试图取消引用指针。)

    或者,如果你这样做的原因是你使用int来存储地址,你应该使用size_t intptr_t这样intptr_t足以在任何平台上保存任何指针值。

    指针始终指向内存地址。 因此,如果要使用指针保存变量,那么您希望在该指针中保存的是变量的内存地址。

    cast足够………………

    需要了解更多c/c++开发分享C编程:将int指针转换为int?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享C编程:将int指针转换为int?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

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

      精彩推荐