[英]Problems changing a void pointer value in C
基本上我的問題是,我試圖改變內部值valor
變量,從而使調用后cambiar_valor
功能,它chenges至25但我的問題是,它不昌的。 我在這里做錯什么了? 我正在嘗試制作一個真正通用的函數,以便根據傳遞給該函數的數據類型,該函數會發生動態變化。 在這種情況下是整數類型,但是我在這里要做的是檢查我是否可以更改函數內部的valor
變量的值
#include<stdio.h>
#include<stdlib.h>
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;
}
在你的職能
void cambiar_valor(void* valor,int* valor_dos) {//assign valor_dos to valor
valor = valor_dos;
}
您在指針經過的價值,這意味着valor
和valor_dos
你在傳遞參數的副本。重新分配valor
在函數內部對通話功能沒有影響。
要解決此問題,請通過指針獲取參數:
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
是不正確的,並且可能在運行時導致segfault。 您可能還想更改它。
希望這可以幫助!
這里
int *valor_dos = 25;
您正在初始化一個指向int的值25的指針。即,它指向內存位置25,這只會導致麻煩。 我很驚訝您沒有遇到段錯誤。
int *valor_dos = 25
這句話是不正確的。 您在此處聲明了一個指針,因此無法為其分配值(25)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.