Programación C y C++

De Proyectos
Ir a la navegación Ir a la búsqueda

Variables

unsigned signed uint8_t byte int long char

Estructuras

Definicion

Declaracion

struct nombre{<br/>
  int variable1;<br/>
  long variable2;<br/>
  char variable3[40];<br/>
};

struct nombre pedro; //En C es obligatorio usar la palabra struct en la declaracion de un objeto struct, en C++ no lo es.

El objeto pedro es un struct de tipo nombre.

Otra forma de declarar:

struct nombre{
  int variable1;
  long variable2;
  char variable3[40];
}pedro;<br/>

Para inicializar la variable pedro se hace como con los arrays,

pedro = {2, 40, "hola"};

Acceder a la información

Pasar por referencia?¿

Funciones dentro de las estructuras

  • Aplicable a C++.
  • Son funciones que manipulan los datos de dentro de la estructura.

Constructor

  • Es una función sin retorno y con el mismo nombre que la estructura
  • Los valores no iniciados con los constructores contendran "basura"
  • Se pueden definir varios constructores

Forma 1:

struct Punto { 
   int x, y; 
   Punto() {x = 0; y = 0;} // Constructor
} Punto1, Punto2;

Forma 2:

struct Punto { 
   int x, y; 
   Punto(); // Declaración del constructor
} Punto1, Punto2;
 
// Definición del constructor, fuera de la estructura
Punto::Punto() {  
   x = 0; 
   y = 0; 
}

Destructor

  • Es igual pero con el simbolo ~ delante.

Funciones

  • Se pueden incluir otras funciones que se declaran y definen como las funciones normales.
struct stPareja { 
   int A, B; 
   int LeeA() { return A;} // Devuelve el valor de A
   int LeeB() { return B;} // Devuelve el valor de B
   void GuardaA(int n) { A = n;} // Asigna un nuevo valor a A
   void GuardaB(int n) { B = n;} // Asigna un nuevo valor a B
} Par;
 
int main() { 
   Par.GuardaA(15); 
   Par.GuardaB(63); 
   cout << Par.LeeA() << endl; 
   cout << Par.LeeB() << endl;
 
   return 0; 
}

Documentación

Curso de C++ con clase
Curso de C - El Rincón de C

Punteros

Punteros en C

typedf -> cambia nombre del tipo a otro nombre personalizado. Ej. typedef strcut contacto contacto_t; //Ahora escribiendo contacto_t estoy escribiendo en realidad struct contacto.