You are on page 1of 5

El lenguaje C/C++

Principales diferencias al compilar:


 ficheros .c (¡con sintaxis C pura!) -> utiliza gcc
 ficheros .cpp (con C++ y/o C) -> utiliza g++

Principales diferencias: E/S


En C++

#include <iostream>
std::cout, std::cin, std::cerr
operadores << y >>

En C puro
#include <stdio.h>

 salida por pantalla:

printf("texto");
printf(" texto con comodines %d %x %c %s \n",variable_entera, variable_hexadecimal,
variable_caracter, variable_cadena_de_caracteres);

 lectura de teclado

scanf("lista de comodines (%s%d...)", direcciones_a_variables);

//es una función que utiliza punteros a variables

Los arrays de C
Permiten la reserva de un número de posiciones consecutivas de memoria

Declaración:

tipo nombre[tamaño]; //EL TAMAÑO ES FIJO

Inicialización:

tipo nombre[tamaño] = {const, const, .. const};


tipo nombre[] = {const, const, .. const};

Asignación
NOTA: la asignación de un arrays a otro array es ilegal en C

char array1[50];
char array2[50];
array1 = array2; //ERROR (se verá la causa más adelante)

Acceso a un elemento:
nombre[índice]
(donde índice está entre [0 , tamaño – 1])

Resumen: arrays en C++ y en C


C++:

#include <tr1/array> // o <array> en C++11


const int TAM_ARRAY = 50;

//declaración con tamaño e inicialización

std::tr1::array<int, TAM_ARRAY> mi_array = {{1,2,3}}; //ojo a la doble llave

//asignación elemento a elemento

mi_array[0] = 0;

//definición como tipo

typedef std::tr1::array<int, TAM_ARRAY> TipoArray;


TipoArray otro_array;

//consulta del tamaño del array (cuantos elementos tiene en uso)

otro_array.size();

C:
const int TAM_ARRAY = 50;

//declaración con tamaño e inicialización

int mi_array[TAM_ARRAY] = {1,2,3}; //quedan 47 huecos libres

//declaración sin tamaño (lo resuelve el compilador)

int mi_array2[] = {1,2,3}; //este tiene sólo 3 elementos

//asignación elemento a elemento

mi_array[0] = 0;

//definición como tipo

typedef int TipoArray[TAM_ARRAY];


TipoArray otro_array;

//NO es posible consultar el tamaño ocupado de un array en C (lo cual es peligroso)

Cadenas de caracteres de C
Declaración
como arrays con tamaño

char nombre[tamaño];

O sin tamaño si se inicializan al declararlos

char cadena[] = {'u', 'n', 'o', '\0'};


char cadena2[] = "uno"; //aquí el compilador pone el '\0'
'u' 'n' 'o' '\0'

Acceso
Se hace como un array normal, aunque existen también funciones especiales.

cadena[0] = 'U';

La diferencia entre un array de C y una cadena es el terminador '\0', que ocupa una posición, y
permite entender el array de caracteres como texto

Cadenas en C++ y en C. Equivalencias


método C++ función C
string::size strlen
string::assign strcpy
(o con el operador =)
string::copy strcpy
(o con el operador =)
string::append strcat
(o con los operadores +=, +)
string::compare strcmp
(o con >, <,==, !=, ...)
string::find strstr
... ...

Funciones básicas para cadenas de caracteres


//no confundir con la clase std::string

Si se usa C++: #include <cstring>


En C puro: #include <string.h>

Esta cabecera declara un conjunto de funciones para manipular cadenas de caracteres

Funciones típicas:
Copia:
memcpy, memmove, strcpy y strncpy

Concatenación:
strcat y strncat
Comparación:
memcmp, strcmp y strncmp

Búsquedas:
memchr, strchr, strstr y strtok

Otras:
memset, y strlen

Bibliotecas de conversiones entre formatos


C++: #include <cstdlib>
C: #include <stdlib.h>

Esta cabecera declara un conjunto de funciones de propósito general:

Funciones:
 atof
 atoi
 atol
 strtod
 strtol
 strtoul

Bibliotecas de detección de caracteres


C++: #include <cctype>
C: #include <ctype.h>

Esta cabecera declara un conjunto de funciones para clasificar y transformar caracteres


individuales:

Funciones:
 iscntrl
 isspace
 isupper
 islower
 isalpha
 isdigit
 isxdigit
 isalnum
 ispunct
 isgraph
 isprint
Definición de estructuras
1. Una estructura es una colección de variables, (incluidas estructuras)

struct nombre {
tipo nombre_campo;
tipo nombre_campo;
};

2. En C/C++, una estructura puede utilizarse como una variable (asignación, paso como
parámetro, valor de vuelta de una función)
3. Las estructuras no se pueden comparar

Tamaño de datos
En C y C++ existe un operador unario sizeof, que devuelve el número de bytes que ocupa una
variable o un tipo de dato en memoria. La longitud la devuelve como natural positivo, en
untipo denominado size_t

Ejemplos:

size_t longitud = sizeof(int);


int var_entera; size_t longitud = sizeof(var_entera);

También se puede utilizar para calcular el tamaño en memoria de una estructura

CUIDADO: SU VALOR PUEDE SER MAYOR QUE LA SUMA INDIVIDUAL DEL TAMAÑO DE SUS
CAMPOS

You might also like