Ver Mensaje Individual
  #9 (permalink)  
Antiguo 14/12/2012, 02:46
Avatar de dontexplain
dontexplain
 
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Error de compilación, sugerencias?

Hola seanmilecín (igual eres un compañero, si no eres ignóralo).

Si lo editas por Visual Studio te indica a cada momento si los tipos introducidos corresponden con los solicitados en el prototipo de la función.

Si el argumento ha de ser un puntero a un tipo tiene que ser un puntero a un tipo. Siempre los arrays a char son punteros per sé por lo que no hace falta indicar el puntero de forma explícita.

char a[] = "Ejemplo";

a es un puntero hacia un array de chars por lo que a es válido como argumento que solicite un puntero hacia este tipo.

const char * const p[2] = { "chars", "chars2"};

Eso sería un array de punteros hacia chars y cada una de las entidades literales de chars son en sí arrays de chars (es una excepción) y por tanto punteros porque todas las referencias a arrays son punteros en sí mismos salvo que no sean literales.

char a[1] = {0x0f};

En el caso anterior es un array no literal de chars, así que se indica tradicionalmente entre { y }.

Entonces strcmp admitiría una referencia directa a los arrays de char

Código C++:
Ver original
  1. char a[] = "asd";
  2. char b[] = "asd";
  3. char *d = a;
  4. int c = strcmp(a,b);
  5.  
  6. int c = strcmp(a,d);

a y b son punteros hacia char, tal y como lo especifica el prototipo. d sería un puntero hacia char por lo que es equivalente.

Código HTML:
Ver original
  1. int strcmp ( const char * str1, const char * str2 );

Esto sucede porque const char *const p = arraychar es similar a const char *const p = &arraychar[0] por lo que se crea otro puntero en lugar de hacer un puntero de un puntero, como pareciera.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 14/12/2012 a las 03:48