Resultados 1 al 4 de 4

Tema: duda sobre punteros y referencias en c++

  1. #1

    Predeterminado duda sobre punteros y referencias en c++

    Buenas chicos, estoy viendo programación en la universidad, y hoy vi como el ordenador maneja las variables en la memoria, entonces partiendo de que un entero es básicamente un bloque de 4 bytes y el char es un solo byte, se me ocurrió hace poco hacer esta prueba:

    Código:
    #include <iostream>
    
    int main(){
    char c = char(70);
    int a=33554431;
    char *pc = &c;
    int compare;
    std::cout << "&a --->" << int(&a) << "----->" << a <<std::endl;
    std::cout << "&c --->" << int(&c) << "----->" << c <<std::endl;
    
    if(int(pc) < int(&a)){
         while(int(pc) < int(&a))++pc;
    }
    else
    while(int(pc) > int(&a))--pc;
    
    *pc = 0;
    
    std::cout << "&a --->" << int(&a) << "----->" << a <<std::endl;
    
    getchar();
    return 0;    
    }
    Yo no tengo ahora en mente un ejemplo numérico más intuitivo, pero yo supongo que al mover el puntero de tipo char justo en la dirección donde se encuentra el int, este cambia solo los primeros (o los últimos) 8 bits del int verdad? Esto me parece un poquito peligroso.

    otra pregunta, por que no puedo hacer esto?

    Código:
    int num;
    int *p;
    if(p == &num){
    fu();
    }
    si el puntero contiene un entero y la referencia a num es otro entero, por que el compilador no me permite hacer esa comparación sin necesidad del cast?

  2. #2

    Predeterminado Re: duda sobre punteros y referencias en c++

    Tu código de ejemplo tiene algunos problemas, como este:
    char c = char(70);

    De todas formas, se entiende la idea.

    Los punteros no son peligrosos por si mismos, lo peligroso son los programadores que no saben usarlos

    No te permite hacer esa comparación sin un cast, precisamente para "asegurarse" que el programador sabe lo que está haciendo. No hay ningún problema en ello.

  3. #3

    Predeterminado Re: duda sobre punteros y referencias en c++

    me sentiría muy agradecida si me corriges cualquier error cometido y me explicas por que es un error, en este caso, que problema hay en esto? char c = char(70); Porque no debería ser igual a esto? char c = 'F';
    Última edición por monica_aguilar; 11/04/2018 a las 07:10

  4. #4

    Predeterminado Re: duda sobre punteros y referencias en c++

    Yo empezaría por aquí:
    http://cpplint.appspot.com/

    En cuanto al cast, si quieres usar los de C++ sería:
    char c = static_cast<char> 70;

    Si quieres los de C:
    char c = (char) 70;

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •