基本上我的问题是我正在尝试更改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_dos
和valor_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