#include <stdio.h>
void imprimeTamanho() {
int array[20];
char string[20];
printf( "TAMANHOS:\n"
"\t char.........: %ld\n"
"\t short........: %ld\n"
"\t int..........: %ld\n"
"\t long.........: %ld\n"
"\t float........: %ld\n"
"\t double.......: %ld\n"
"\t long double..: %ld\n"
"\t vetor int....: %ld\n"
"\t string.......: %ld\n\n",
sizeof(char), sizeof(short), sizeof(int), sizeof(long),
sizeof(float), sizeof(double), sizeof(long double),
sizeof(array), sizeof(string) );
}
void imprimeEndereco() {
int i = 5;
printf( "Endereço de i: %ld\n", (long int) &i );
printf( "Endereço de i: %p\n\n", (void *) &i );
}
void declaraPtr() {
int i; int *p;
i = 1234; p = &i;
printf ("*p = %d\n", *p);
printf (" p = %ld\n", (long int) p);
printf (" p = %p\n", (void *) p);
printf ("&p = %p\n\n", (void *) &p);
}
void troca (int *i, int *j) {
int temp;
temp = *i; *i = *j; *j = temp;
}
void forcaBarra() {
int var;
char *ptr;
ptr = &var;
ptr[0] = 'a';
ptr[1] = 'm';
ptr[2] = 'o';
ptr[3] = '\0';
// var = var + 1;
printf( "Olha a forcada de barra: %s.... var = %d\n\n", (char *) ptr, var);
}
void ex1() {
int arr[] = { 9, 8, 98, 88, 87, 1, 2, 4, 101, 102, 103, 105 };
int *x = arr+4;
int *ptr = &arr[7];
arr[*ptr]++;
printf( "First value: %d\n", *ptr); // 4
printf( "Second value: %d\n", *x); // 87
*x = 7;
printf( "Third value: %d\n\n", arr[4] + *ptr); // 11
}
void percorreVetor() {
int b[] = { 10, 20, 30, 40 };
int *bPtr = b;
int i, offset;
printf( "VETOR\n" );
printf( "\n\tNotacao usando indices:\n" );
for ( i = 0; i < 4; i++ ) {
printf( "\t\tb[%d] = %d\n", i, b[i] );
}
printf( "\n\tNotacao usando deslocamento\n" );
for ( offset = 0; offset < 4; offset++ ) {
printf( "\t\t*(b + %d) = %d\n", offset, *(b + offset) );
}
printf( "\nPONTEIRO\n" );
printf( "\n\tNotacao usando indices:\n" );
for ( i = 0; i < 4; i++ ) {
printf( "\t\tbPtr[%d] = %d\n", i, bPtr[i] );
}
printf( "\n\tNotacao usando deslocamento\n" );
for ( offset = 0; offset < 4; offset++ ) {
printf( "\t\t*(bPtr + %d) = %d\n", offset, *(bPtr + offset) );
}
printf( "\n" );
}
int main() {
int a = 2, b = 3;
ex1();
percorreVetor();
forcaBarra();
imprimeTamanho();
imprimeEndereco();
declaraPtr();
troca( &a, &b );
printf( "a = %d, b = %d\n\n", a, b );
return 0;
}