A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

C para Javaneses Novembro 2003 Elmar Melcher UFCG

Apresentações semelhantes


Apresentação em tema: "C para Javaneses Novembro 2003 Elmar Melcher UFCG"— Transcrição da apresentação:

1 C para Javaneses Novembro 2003 Elmar Melcher UFCG

2 C = f(Java) C = Java – OO + ponteiros Resumido:
Métodos são dissociados dos dados. Todos os métodos são definidos globalmente. Struct é uma classe somente com atributos públicos (sem métodos, sem privacidade). Um ponteiro é o endereço de um objeto na memória. Um ponteiro “sabe” o tamanho do objeto.

3 Estruturas e ponteiros
Veja agora as transaprências de Jacobi. Depois volte para ‘ca.

4 Uma struct pode conter outra
struct coisa_str { int fofa; int dura; } coisa; struct alguma_str { int mole; struct coisa_str coisa; } alguma; void test() { alguma.coisa.fofa = 55; }

5 Uma struct pode conter um vetor de outras
struct coisa_str { int fofa; int dura; } coisas[10]; struct alguma_str { int mole; struct coisa_str *ncoisa; } alguma; void test() { alguma.ncoisas = coisas; alguma.ncoisas[5].fofa = 55; }

6 Um apontador para uma função
typedef int (*func_ptr)(); int rotina(int a) { return(a+5); } void test() { func_ptr exec = &rotina; x = (*exec)(50); // agora x comtém 55

7 Estruturas de bits Ponteiro sobre struct selector
pl:2; // 2 bits menos signficativos ldt:1; // 1 bits index:13; // 13 bits mais signficativos } sel; unsigned short s; // 16 bits void test() { sel.pl = 3; sel.ldt = 0; sel.index = 0x200; s = * (unsigned short *) &sel; } Ponteiro sobre struct selector Convertido em Ponteiro sobre unsigned short dereferenciado

8 Union Armazena objetos diferentes no mesmo lugar union coisa_uni {
int fofa; int dura; } coisa; void test() { coisas.fofa = 55; // agora coisa.dura é 55 também ! }

9 Union – outro exemplo struct gate_str { unsigned int offset;
unsigned short selector; unsigned short params; }; struct segment_str { unsigned int base; unsigned int limit; struct dt_str { word length; union { struct gate_str *g; struct segment_str *s; } base; } gdt; … gdt.base.s[200].limit = 500;


Carregar ppt "C para Javaneses Novembro 2003 Elmar Melcher UFCG"

Apresentações semelhantes


Anúncios Google