[C con Clase] consulta de archivos

Programante programante en gmail.com
Jue Ago 7 12:25:21 CEST 2008


ed jadul escribió:
>
>     *cad1 es un puntero a char*. En cambio cad1[2] es el caracter de
>     la 3ª*
>     *posición. &cad1[2] es la dirección de memoria en la que empieza
>     el 3er*
>     *caracter. Que es lo que querías.*
>     *Otra opción equivalente sería utilizar aritmética de punteros:
>     cad1 + 2*
>
>
> Eso es justo lo que queria saber. Duda resuelta.
>
>
>     *Si lo que colocases fuera * en vez de & (*cad[2]), estarías
>     accediendo a*
>     *la dirección de memoria que tiene el valor del 3er caracter.*
>     *Esto es incorrecto porque en un caracter no podemos almacenar un*
>     *puntero, y además la dirección de memoria que nos daría no estaría*
>     *reservada para nuestro programa, por lo que nos produciría un
>     fallo de*
>     *segmentación.*
>
>  
> No, habia colocado *(*cad[2]) *cuando se lo pasaba a strncmp*, *
>
> Como * *nueva pregunta:  Asi *(*cad[2]) *que es lo que estoy diciendo?
*(*cad[2]) es lo que comenté. Queda algo confuso al decir "* en vez de 
&", puede parecer que hablo de &(*cad[2])*
El 3er caracter tiene un valor, por ejemplo 65 (una A). Entonces al 
hacer *65 estás intentando acceder a lo que haya en la dirección
de memoria 65. A la cual tu programa no tendrá acceso.
> y con **(&cad[2])* ?
Hallas la dirección de memoria del tercer caracter de la cadena, y luego 
accedes a esa memoria, con lo que estás accediendo al tercer caracter, 
es equivalente a cad[2]




Más información sobre la lista de distribución Cconclase