Problema con un parametro (&string[]) -
Nicolas_Castillo - 29.07.2013
Bueno, estoy intentando pasar un valor por una funciуn, y que la modifique pero sin que la retorne
Код:
stock ColocarAlgo(&str[])
{
//str = "Texto Aqui";
strmid(str, "Texto Aqui", 0, 10, 10);
}
public OnGameModeExit()
{
new st[10];
ColocarAlgo(st);
print(st);
return 1;
}
pero me da este error
Код:
error 067: variable cannot be both a reference and an array (variable "str")
y no se como se solucionarнa.
De antemano, Gracias.
Respuesta: Problema con un parametro (&string[]) -
Parka - 29.07.2013
pawn Код:
stock ColocarAlgo(str[])
{
//str = "Texto Aqui";
strmid(str, "Texto Aqui", 0, 10, 10);
}
que pretendes hacer ??
Respuesta: Problema con un parametro (&string[]) -
Nicolas_Castillo - 29.07.2013
Algo como esto:
Quote:
Originally Posted by Dreyfuz
pawn Код:
//Esto seria sin el & antes del parametro main() { new Un_Valor; Un_Valor = 100; Sumar(Un_Valor);//Se envia el valor de la variable, que es 100 printf("%i", Un_Valor);//Imprime el valor de la variable que es 100(No se modifico en Sumar()) }
stock Sumar(valor) { valor = valor + 100; }
pawn Код:
//Esto seria con el & antes del parametro main() { new Un_Valor; Un_Valor = 100;
Sumar(Un_Valor);//Se envia el valor de la variable, que es 100 printf("%i", Un_Valor);//Imprime el valor de la variable que es 200(Ya que se modifico en Sumar()) }
stock Sumar(&valor) { valor = valor + 100; }
|
Pero con strings
Respuesta: Problema con un parametro (&string[]) -
Parka - 29.07.2013
Si no me equivoco creo que no se puede ._.
Respuesta: Problema con un parametro (&string[]) -
Nicolas_Castillo - 29.07.2013
Wo. Eso seria malo
Respuesta: Problema con un parametro (&string[]) -
TheChaoz - 29.07.2013
Lo que tu quieres es pasar por referencia y no por valor.
Para pasar un entero/booleano/decimal o cualquier valor que no sea un array, debes colocar el '&' delante para que dicha variable sea modificada (pasada por referencia), caso contrario no sera modificada.
Ej:
pawn Код:
stock PorValor(value)
{
value++;
return 1;
}
stock PorReferencia(&value)
{
value++;
return 1;
}
main()
{
new
val = 100;
PorValor(val);
printf("val: %i", val);//Escribira en la consola "val: 100"
PorReferencia(val);
printf("val: %i", val);//Escribira en la consola "val: 101"
}
Ahora bien, los arrays son pasados por defecto por referencia, por lo cual si no queremos que estos sean modificados debemos agregar 'const' delante de los mismos.
Ej:
pawn Код:
stock PorValor(const array[])
{
if(array[0] != '\0')
array[0] = 'H';//<--- Error de compilacion por intentar modificar un array constante
return 1;
}
stock PorReferencia(array[])
{
if(array[0] != '\0')
array[0] = 'H';
return 1;
}
public OnFilterScriptInit()
{
new
arr[] = "ola";
PorValor(arr);
printf("arr: %s", arr);//Escribira en la consola "arr: ola"
PorReferencia(arr);
printf("arr: %s", arr);//Escribira en la consola "arr: Hola"
}
Respuesta: Problema con un parametro (&string[]) -
Nicolas_Castillo - 29.07.2013
... Todo ese error, solo por tener el & al principio, sol tenia que quitarlo. No sabia que para pasar un string por referencia no era necesario el & antes del parбmetro, aъn me falta mucho en programaciуn.
Gracias Chaoz