Вы находитесь на странице: 1из 5

Linguagem C

(Tipos de Dados Definidos pelo Usurio)

Prof. Edson Pedro Ferlin

by Prof. Edson Pedro Ferlin

Introduo
A linguagem C permite que se crie cinco tipos diferentes
de dados personalizados:

Estrutura (struct) grupo de variveis sob o mesmo nome;

Enumerao (enum) lista de smbolos;

Campo de bit fcil acesso aos bits dentro de uma palavra;

Unio (union) define-se a uma mesma parte da memria


como dois ou mais tipos diferentes de varivel;

Tipo novo (typedef) cria um novo nome para um tipo j


existente.

www.professorferlin.blogspot.com 1
Estruturas
by Prof. Edson Pedro Ferlin

Struct

Os elementos das estrutura esto relacionados


logicamente uns com os outros;

struct addr {
char nome[30];
char rua[40];
Matrizes de estrutura
char cidade[20];
char estado [3]; struct addr end_m[100];
unsigned long int cep;
}; end_info[2].cep = 85000;

struct addr end_info;

end_info.cep=80000;

Estruturas
by Prof. Edson Pedro Ferlin

Elementos da struct para funes

Passar o valor do elemento;

struct test {
char x;
int y;
float z;
char s[10];
} teste1;

func1 (teste1.x); /* valor de caracter x */


func2 (teste1.s); /* endereco da string s */

www.professorferlin.blogspot.com 2
Estruturas
by Prof. Edson Pedro Ferlin

Estrutura inteira para funes


O tipo do argumento deve coincidir com o tipo do parmetro;

main()
{
struct { struct estru_d{
int a, b; int a, b;
char ch;
char ch;
};
} argu;
main()
argu.a=1000; {
f1 (argu); struct estru_d argu;
} argu.a=1000;
f1(parm) f1 (argu);
struct { }
int x, y; f1(parm)
char ch; struct estru_d param;
} parm; {
{ prinf(%d, parm.a);
prinf(%d, parm.x); }
}
5

Estruturas
by Prof. Edson Pedro Ferlin

Ponteiros para estruturas


Mesma maneira que para outro tipo de varivel;

struct bal { /* definicao estrutura*/


float balanco;
Os parnteses so
char nome[80];
necessrios.
} pessoa;
(*p).balanco
float f; P->balanco

struct bal *p; /* declarou-se um ponteiro */

p = &pessoa; /* endereco de pessoa para o ponteiro p


*/

f = (*p).balanco; /* faz referencia ao elemento balanco */

www.professorferlin.blogspot.com 3
Enumeraes
by Prof. Edson Pedro Ferlin

Enum
um conjunto de constantes inteiras com nome e especifica
todos os valores legais que uma varivel daquele tipo pode
ter;

O ponto-chave sobre a enumerao que cada smbolo


significa um valor inteiro.

enum moeda {penny, nickel, dime, quarter, half-dollar, dollar}

enum moeda dinheiro;

dinheiro = dime;

If (dinheiro == quarter) printf (Eh um quarter \n);

printf (%d %d, penny, dime); /* 0 2 */

Campo de Bit
by Prof. Edson Pedro Ferlin

struct device {
um tipo especial que unsigned active: 1;
define o comprimento em unsigned ready: 1;
bits de cada elemento; unsigned error: 1;
} dev_code;

Variveis booleanas; dev_code.active

Informaes codificadas;
Restries:
Acesso de bits dentro de
um byte; No se pode pegar o endereo de
uma varivel de campo de bit;
No se pode colocar em matrizes;
Eficincia; No se pode ultrapassar os limites de
inteiros.
Programa mais porttil.

www.professorferlin.blogspot.com 4
Unies
by Prof. Edson Pedro Ferlin

Union

uma localizao de memria


union u_type {
que usada por muitas
int i;
variveis, que podem ser de char ch;
tipos diferentes; } cntv;

cntv.i = 10;
So usadas quando as
converses de tipo so func1(un)
necessrias. union u_type *un;
{
un ->i = 10;
}

Typedef
by Prof. Edson Pedro Ferlin

Usada para se definir um novo nome para um tipo


existente;

O ponto-chave sobre a enumerao que cada smbolo


significa um valor inteiro.

typedef float balanco;

balanco extrato_conta;

10

www.professorferlin.blogspot.com 5

Вам также может понравиться