¿Cómo cambiar una variable en una función de llamada desde una función llamada?

¿Cómo debería modificarse (y se llama try() función try() para obtener la salida como 11 del progtwig a continuación?

 #include  /* declare try() here */ int main(void) { int x = 10; try(); /* Call can change */ printf("%d\n", x); return 0; } void try() /* Signature can change */ { /* how to change x here?? */ } 

Para cambiar el valor de x desde dentro de una función, haga que try() tome un puntero a la variable y la cambie allí.

p.ej,

 void try(int *x) { *x = 11; } int main() { int x = 10; try(&x); printf("%d",x); return 0; } 

Las otras respuestas son correctas. La única forma de cambiar realmente una variable dentro de otra función es pasarla a través del puntero. El ejemplo de Jeff M es el mejor, aquí.

Si realmente no tiene que ser exactamente la misma variable, puede devolver el valor de esa función y reasignarlo a la variable, ala:

 int try(int x) { x = x + 1; return x; } int main() { int x = 10; x = try(x); printf("%d",x); return 0; } 

Otra opción es hacerlo global (pero no lo hagas muy a menudo, ¡es muy complicado!):

 int x; void try() { x = 5; } int main() { x = 10; try(); printf("%d",x); return 0; } 

Debe pasar un puntero a la ubicación de la memoria (una copia del puntero original). De lo contrario, solo está modificando una copia del valor original que desaparece cuando la función sale.

 void Try( int *x ); int main( void ) { int x = 10; Try( &x ); /* ... */ } void Try( int *x ) { *x = 11; }