090407 Clase 7 de abril

Gracias nuevamente a Emiliano Seguimos con los arreglos. Se declaran ( ej)
double[10]; /* arreglo double de 10 lugares contiguos en memoria, en un solo bloque */
int a[5] = {1, 2, 3, 4, 5};
int a[] = {1, 2, 3, 4, 5};
int a[10] = {1, 2, 3, 4, 5}; /* a[5] a a[9] van ceros */
int[1] = {1, 2};
float a[5][10];
#include <stdio h> int main(){ printf('hola mundo'); }
#include <stdio h> int main(){ printf("%s\n", "hola mundo"); }
#include <stdio h> static char lines[]={'h','o','l','a',' ','m','u','n','d','o','\0'}; int main(){ printf("%s\n", lines); return ; }
'hola' = {'h','o','l','a','\0'}
strcpy(s1, s2) // copia s2 en s1 strlen(s) // cuantos caracteres tiene (sin contar '\0') strcmp(s1, s2) /* compara s1 y s2. Devuelve: <0 si s1 < s2 =0 si s1 = s2 >;0 si s1 > s2*/ strcat(s1, s2) // concatena s1 y s2.
int strcmp(char s[], char s2[]) { int i; for(i=; s1[i] != && s2[i]!=; i++) if(s1[i] > s2[i]) return 1; else if (s1[i] < s2[i] return -1; if s1[i] > s2[i]) return 1; if s1[i] < s2[i]) return -1; else return ; }
int mistrcmp(char s12], char s2[]) { int i; for(...que carajo iba aca.. jajaajaj...); return s1[i] - s2[i]; }
int mistrcmp(char s1[]. s2[]) { int i; for(i=; s1[i] != '\0' && s2
Punteros
Una variable tiene:
- un valor
- un tipo
- una direccion de memoria
C permite saber esto último, la dirección de memoria donde esta una memoria con el operador de dirección, que es el &. Ej:
#include <stdio h> int main() { int i=10; printf("valor = %d\n", i); printf("direccion= %p\n", &i); /* %p muestra la direccion en hexadecimal */ return ; }
scanf("%d", &i);
#include <stdio h> void swap(int i, intj) { int tmp=i; i=j; j=tmp; } int main() { int = 10, y = 11; swap(x,y); printf("%d %d\n", x, y); return -; }
int i = 13, *p = &i; /* p -> direccion de i *p -> 13 */
void swap(int *i, int *j) { int tmp = *i; *i = *j; *j = tmp; } swap(&x, &y);
int i; int *p = &i; int **q = &p; int ***r= &q;
Suma de punteros
A un puntero se le puede sumar un entero y da otro puntero del mismo tipo
Apunta al valor *p
si *p es un puntero a un tipo T, *p + n es por definición el valor de *p tomado como si fuera un entero + n por el tamaño del tipo T apuntado. Use mal un puntero y tendrá un hermoso error.
Resta de punteros
Da el mismo tipo, da un entero que indica cuantos valores pueden alojarse entre los dos punteros.
Trackback URL for "090407 Clase 7 de abril"
http://www.odiolasllaves.com.ar/trackback/94
»
- Inicie sesión o regístrese para enviar comentarios

Hola Seba, fijate en los
Hola Seba, fijate en los bloques de código. Yo estoy usando Opera 10.10 y Konqueror 3.5.9 .
Por ejemplo en el bloque 12, en el primer if: if(s1[i] & gt ; s2[i]) return 1;
Supongo que ahora se verá bien, pero en lugar del > veo: "& gt ;" pero sin los espacios (si lo pongo sin espacios se va a ver como >)
Supongo que sucede por que está entre etiquetas < code >
Saludos
Hola Seba, fijate en los
Hola Seba, fijate en los bloques de código. Yo estoy usando Opera 10.10 y Konqueror 3.5.9 .
Por ejemplo en el bloque 11 veo:
strcpy(s1, s2) // copia s2 en s1
strlen(s) // cuantos caracteres tiene (sin contar '\0')
strcmp(s1, s2) /* compara s1 y s2. Devuelve:
<0 si s1 < s2
=0 si s1 = s2
>0 si s1 > s2*/
strcat(s1, s2) // concatena s1 y s2.
y supongo que debería aparecer:
strcpy(s1, s2) // copia s2 en s1
strlen(s) // cuantos caracteres tiene (sin contar '\0')
strcmp(s1, s2) /* compara s1 y s2. Devuelve:
<0 si s1 < s2
=0 si s1 = s2
>0 si s1 > s2*/
strcat(s1, s2) // concatena s1 y s2.
Saludos
No había visto que
No había visto que contestaste, por eso respondo un poco tarde.....
El problema aparece en Opera 10.10 y Konqueror 3.5.9.
En el código 11: /* compara s1 y s2. Devuelve: <0 si s1 < s2 =0 si s1 = s2 >0 si s1 > s2*/
En el código 12: for(i=; s1[i] != && s2[i]!=; i++)
if(s1[i] > s2[i]) return 1; else if (s1[i] < s2[i] return -1;
if s1[i] > s2[i]) return 1; if s1[i] < s2[i]) return -1;
En el código 14: for(i=; s1[i] != '\0' && s2
Y en otros mas... Supongo que es por que usarás alguna etiqueta
Gracias Mariano. Me fijé bien
Gracias Mariano. Me fijé bien y efectivamente estaban mal los caracteres. Tal vez en algun cambio de configuración del drupal se deformó...
Teoricamente se deberia poder escribir tal cual va y salir bien.
Aprovecho para comentar que cualquiera puede editar, con tan solo estar registrado. Las revisiones se van guardando, asi que siempre se puede volver atras ;)
Un abrazo y gracias por el tiempo.
Hola! Me podrias indicar
Hola!
Me podrias indicar donde no se ven los < y >?
Vaoy a probar con distintos navegadores para ver si puede andar por ahi el problema, ya que yo los veo bien.
Gracias por la observación!
Hola, fijate bien, por que
Hola, fijate bien, por que los signos > y < no se muestran como deberían en el código.
Gracias por subir todo este material.
Saludos