c/c++语言开发共享在C中更改void指针值时出现问题

基本上我的问题是我正在尝试更改cambiar_valor变量中的值,以便在调用cambiar_valor函数之后它变为25.但我的问题是它根本没有变化。 我在这里做错了什么? 我正在尝试制作一个非常通用的函数,以便根据我传递给函数的数据类型,它会改变。 在这种情况下是一个整数类型,但我在这里尝试做的是检查我是否可以更改函数内的valor变量的值

 #include #include void cambiar_valor(void* valor,int* valor_dos) {//assign valor_dos to valor valor = valor_dos; } int main() { void *valor; int *valor_dos = 25; cambiar_valor(valor,valor_dos); printf("%d n",(int*)valor);//this should show 25 return 0; } 

    在你的function

     void cambiar_valor(void* valor,int* valor_dos) {//assign valor_dos to valor valor = valor_dos; } 

    您按值传递指针,这意味着valor_dosvalor_dos是您传入的参数的副本。在函数内重新分配valor_dos对调用函数没有影响。

    要解决此问题,请通过指针获取参数:

     void cambiar_valor(void** valor, int* valor_dos) {//assign valor_dos to valor *valor = valor_dos; } 

    然后打电话

     cambiar_valor(&valor, valor_dos); 

    另外,正如@Levon所提到的,你在main初始化valor_dos是不正确的,并且可能会在运行时导致段错误。 您可能也想要更改它。

    希望这可以帮助!

    这里

      int *valor_dos = 25; 

    你正在初始化一个指向int的指针,其值为25 ..即,它指向内存位置25,这只会导致麻烦。 我很惊讶你没有得到段故障。

     int *valor_dos = 25 

    这个说法不正确。 您在这里声明了一个指针,因此您无法为其指定值(25)。

      以上就是c/c++开发分享在C中更改void指针值时出现问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐