Aula Ponteiros

Run Settings
LanguageC
Language Version
Run Command
#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; }
Editor Settings
Theme
Key bindings
Full width
Lines