cita:
Una función es una relación entre dos variables numéricas, habitualmente las denominamos x e y; a una de ellas la llamamos variable dependiente pues depende de los valores de la otra para su valor, suele ser la y; a la otra por tanto se la denomina variable independiente y suele ser la x.
Pero además, para que una relación sea función, a cada valor de la variable independiente le corresponde uno o ningún valor de la variable dependiente, no le pueden corresponder dos o más valores.
para evitar el uso excesivo del stack
Bueno lo de los apuntadores y variables globales esta claro se utilizan cuando hacen falta :D lo que todavia no entiendo bien y me gustaria que me esplicaran, es que tiene que ver la creacion de una variable con el uso del stack, al menos yo no habia encontrado una relacion, por lo cual pido por favor que me expliquen :?
int32 entero(int dato[]) // funcion para convertir el array en entero
{
int32 num=0; // inicialización del número convertido
cont=10000; // valor inicial para el multiplicador
dig=0; // inicialización de dígtos
do // bucle de conversión
{
num=num+dato[dig]*cont; // obtención del primer número del array (decenas de mil)
cont=cont/10; // se reduce orden de magnitud del miltiplicador
dig++; // incrementa el valor de la posición del array
}while(dig!=5); // se realiza mientras no se llegue al final del array
return num; // retorna el valor convertido
}Una pregunta referente a los tipos de variables. ¿Las variables locales en los pic de la gama alta se crean en el stack?.
Un saludo.
Pues el CCS por lo menos en los pic de la gama baja no loa hace así, ademas no lo puede hacer ya que el stack solo tgiene 8 posiciones y son muy pocas para ademas utilizarlo en la declaración de variables locales (esta comprobado en el listado de ASM que genera).
Un saludo.
displayString("HOLA");char temp[10];
...
sprintf(temp,"Hola");
displayString(temp);
Esto es inválido en cualquier compilador de C:Código: [Seleccionar]displayString("HOLA");
Debes armar el string y después pasar un puntero.
#include <stdio.h>
int suma(int a,int b)
{
int c;
c=a+b;
a=4;
b=8;
return(c);
}
main()
{
int var,var2,resultado;
var1=2;
var2=3;
printf("%d %d\n\n",var1,var2); //Las variables antes de llamar a suma.
resultado=suma(var1,var2);
printf("El resultado de la suma es %d\n",resultado);
printf("%d %d\n\n",var1,var2); //El valor de las variables no
//se modifica dentro de main porq pasan por valor a la función suma.
getchar();
return(0);
}
O sea en este programa con variables locales a main var1 no es =4 ni var2=8.Lo mismo #include <stdio.h>
int var1,var2,resultado; //Variables globales ahora
int suma(int a,int b)
{
int c;
c=a+b;
a=4;
b=8;
return(c);
}
main()
{
int var1,var2; //Son locales a main.
int resultado;
var1=2;
var2=3;
printf("%d %d\n\n",var1,var2); //Las variables antes de llamar a suma.
resultado=suma(var1,var2);
printf("El resultado de la suma es %d\n",resultado);
printf("%d %d\n\n",var1,var2); //El valor de las variables tampoco
//se modifica dentro de main por mas q ahora sean globales
getchar();//espera q se pulse un caracter del teclado
return(0);
}
Solo las modificaria haciendo algo asi si uso globales(ademas de los punteros claro)#include <stdio.h>
int a,b;
int suma()
{
return (a+b);
}
int main()
{
a=4;b=2;
printf("%d\n", suma() ); //esto deberia dar 6
}
#include <16F876a.h>
#device adc = 10
#use delay (CLOCK = 4000000)
#fuses XT,NOWDT,NOLVP
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_C0
#define LCD_RW PIN_C1
#define LCD_E PIN_C2
#include <flex_lcd420.c>
void mostrar(char*ptr)
{
while(*ptr)
{
printf(lcd_putc,"%c",*ptr);
ptr++;
}
}
void main()
{
char str1[21]="HOLA_TODOPIC";
lcd_init();
printf(lcd_putc,"Probando\n");
mostrar(str1);
}
//En este caso muestro como pasar una variable por referencia a una funcion ulizando el &,
//luego dentro de la funcion muestro el valor de la variable y paso seguido modifico su valor
// original('R') y lo cambio por una 'H'
//para despues dentro del main mostrar su nuevo valor!
//!Este metodo no sirve para pasar un array o string¡ ;)
#include <16F876a.h>
#device adc = 10
#use delay (CLOCK = 4000000)
#fuses XT,NOWDT,NOLVP
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_C0
#define LCD_RW PIN_C1
#define LCD_E PIN_C2
#include <flex_lcd420.c>
void mostrar (char & ptr);
void main()
{
char str1= 'R';
lcd_init();
printf(lcd_putc,"Probando\n");
mostrar(str1);
printf(lcd_putc,"%c",str1);
}
void mostrar(char & ptr)
{
printf(lcd_putc,"%c\n",ptr);
ptr='H';
}
buenos ejemplos RALF, ya tomé nota
y ahora viendo ello me da mucha curiosidad lo siguiente:
void mostrar (char & ptr);
void mostrar (char * ptr);
cual es la diferencia en hacerlo de una u otra forma?? yo generalmente uso la segunda
saludos.