01 - Lenguaje C para especialistas en C++
Diferencias importantes entre C y C++
Standard input and output
Ejemplo en C++
#include <iostream>
using namespace std;
int main() {
int a = 50;
cin >> a;
cout << "The integer value of a is " << a << endl;
return 0;
}
Su equivalente en C
#include <stdio.h>
int main() {
int a = 50;
scanf("%d", &a);
printf("The integer value of a is %d \n",a);
return 0;
}
- cin : scanf(format specifier(s), addresses of variables to assign)
-
cout : printf(literal/format specifiers, variables to print)
-
Recomendación
Command Line Arguments
Igual en C que en C++ pero vale la pena repasar...
#include <stdio.h>
int main(int argc, char** argv) {
printf("Received %d arguments\n",argc);
for (int i = 0; i < argc; i++)
printf("%s\n",argv[i]);
return 0;
}
- Recomendación: imprime la dirección de argv, argv[0], arg[0][1], arg[1], para que te crees una imagen mental de cómo están guardados los strings argumentos.
new/delete : malloc/free
Ejemplo arreglo dinámico en C++
#include <stdio.h>
int main(int argc, char** argv) {
int *a;
a = new int[10];
for (int i = 0; i < 10; i++) a[i] = rand()%100;
for (int i = 0; i < 10; i++)
printf("%d\n",a[i]);
delete [] a;
return 0;
}
Equivalente en C.
#include <stdio.h>
int main(int argc, char** argv) {
int *a;
a = (int *)malloc(10*sizeof(int));
for (int i = 0; i < 10; i++) a[i] = rand()%100;
for (int i = 0; i < 10; i++)
printf("%d\n",a[i]);
free(a);
return 0;
}
Los strings son arreglos de chars
No son objetos y por lo tanto se manipulan usando funciones que reciben strings como argumentos: strlen
, strcpy
, strcat
.
#include <stdio.h>
int main(int argc, char** argv) {
char st0[100],st1[100], *st2, *st3;
printf("Entre nombre:");
scanf("%s", st0);
printf("Entre apellido:");
scanf("%s", st1);
st2 = malloc(strlen(st0) + strlen(st1) + 2 );
strcpy(st2, st0);
strcat(st2, st1);
printf("%s\n",st2);
st3 = malloc(strlen(st0) + strlen(st1) + 2 );
sprintf(st3, "%s %s", st0, st1);
printf("%s\n",st3);
return 0;
}
Operaciones bitwise (igual que en C++)
&, |, ^, <<, >>, ~
Ejemplo de geeks4geeks...
#include <stdio.h>
int main()
{
// a = 5(00000101), b = 9(00001001)
unsigned char a = 5, b = 9;
// The result is 00000001
printf("a&b = %d\n", a & b);
// The result is 00001101
printf("a|b = %d\n", a | b);
// The result is 00001100
printf("a^b = %d\n", a ^ b);
// The result is 11111010
printf("~a = %d\n", a = ~a);
// The result is 00100100
printf("b<<2 = %d\n", b << 1);
// The result is 00000100
printf("b>>1 = %d\n", b >> 1);
return 0;
}