Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2014, 18:04
ricardojara
 
Fecha de Ingreso: noviembre-2012
Mensajes: 53
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Teoria de Punteros C

Buenas estoy empezando con este idioma después de mucha experiencia en POO
y tenía ciertas dudas sobre los punteros y los char como por ejemplo:

Código:
char cad1[]="hola";
en este caso cad1 es un vector de char con los valores 'h','o',l,'a','\0'

pero luego no puedes hacer esto
Código:
char cad1[4];
cad1="hola"
te dice que no le puedes asignar ese valor tipos incompatibles.
Pero te deja usar un método
Código:
strcpy( cad1, "hola");
por lo que yo creía "hola" representaba un vector de caracteres pero parece que no por que si no me dejaría darle este valor directamente

No obstante usando char* si te deja lo cual me extraña por que si "hola" no es un vector de caracteres entonces a que apuntaría la variable

Otra duda es con los Punteros a Punteros de char se supone que se puede crear un vector de char usando char **vector
pero no le encuentro la lógica osea vector apunta a un puntero que apunta a un vector de caracteres (ej "saludo1")pero como apuntas al siguiente vector de caracteres luego ej "saludo2"?

Intente recorrer un char ** pero no me funcionó
EJ
Código:
void mostrarChar(char **matriz)
{
    int f;
    for (f=0;f<7;f++)
    {
        printf("%s\n",matriz[f][0]);
    }
}

int main(int argc, char** argv)
{
    char **matriz={"Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo"};
    mostrarChar(matriz);
    return (EXIT_SUCCESS);
}
Una ultima duda es que creo que no se puede usar scanf() con un puntero a char si no que tienes que hacerlo con un vector de char de tamaño fijo lo cual lo veo un desperdicio por que tu no sabes cuantas palabras puede escribir el usuario.

Bueno estos son los problemas mas complicados que estoy teniendo con C
quizá este muy acostumbrado a Java con su String etc XD

Me harías un gran favor si me pudieses aclarar un poco este cacao que tengo
Un saludo Y gracias de ante mano