[C con Clase] Prioridad operadores. Punteros a struct

Davidson, Steven srd4121 en njit.edu
Lun Abr 21 21:22:15 CEST 2014


Hola Marving,

2014-04-21 14:47 GMT-04:00 Marving <jr.marving en gmail.com>:

[CORTE]

SD> y 2 términos (no son operadores):
>
> ¿término y operandos son lo mismo?
>
>
Sí. Iba a decir "operandos", pero en realidad tenemos más operandos al
evaluar la expresión. Por ejemplo,

3 * 2 + 1

realmente tiene tres términos: 3, 2, y 1; dos operadores: * y +; y cuatro
operandos: 3, 2, 6 (3*2), y 1.

SD> Este error del sistema operativo tiene que ver con el hecho de que has
> SD> accedido a memoria que no reservaste, a consecuencia de esta
> SD> operación: 'ptr_strct++',
>
> si pero después de poner esa sentencia citada,
> Puse estas tres, en las que aparentemente restablezco la dirección y los
> cout
> así parece que lo verifica
>      ptr_strct = &clnt;
>      cout << "Dirección de memoria " << ptr_strct << endl;
>      cout << "Contenido            " << ptr_strct->nombre << endl;
>
> Luego ya puse la sentencia de la que hablamos, que genera el error
>      cout <<  ++*ptr_strct->nombre << endl;
>
> En fin no se. Algo se me escapa, creo.
>
>
Entiendo. Entonces el error seguramente se deba a lo que expliqué
previamente acerca de asignar una cadena literal (y por tanto constante) a
un puntero a 'char' (y por tanto, modificable). Intenta apuntar a un array;
por ejemplo,

char szCadena[] = "Bjarne Stroustrup";

ptr_strct->nombre = szCadena;

cout <<  ++*ptr_strct->nombre << endl;


También podrías cambiar la definición de 'Cliente' para que 'nombre' sea un
array y no un puntero, pero posiblemente esto cambie la prueba que querías
hacer.


Espero que esto te ayude.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140421/a77bd6e3/attachment.html>


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