Академический Документы
Профессиональный Документы
Культура Документы
12/10/2014
1252 Palavras
PGINA
6
DE 6
acordo com o mtodo escolhido deve-se utilizar o operador correto, ou seja, . ponto
para passagem por valor e -> para a passagem por referencia.
1.2.1.1. Passagem por cpia de valor da estrutura.
Passa-se o nome da estrutura para a estrutura da funo implicando a copia do contedo
de uma estrutura para outra. Em detrimento as passagem de alinhamento, ou seja,
arrays, esse tipo de passagem no existe, ao passar o nome de um array para um array
local da funo no esta sendo feita a copia do contedo do array e sim uma copia do
endereo do array.
ESTRUTURAS: Recebe a copia da estrutura.
float produto(VETOR a);
ARRAYS: Recebe a copia doendereo do array.
float produto (float a[]);
Exemplos:
1. Passagem por cpia de valor de estrutura.
#include
typedef struct { float x;
float y;
} VETOR;
float produto (VETOR);
main(){
VETOR p = {5.0,10.0};
float p_resultado;
p_resultado = produto (p);
printf(Poduto = %f, p_resultado);
}
float produto (VETOR){
return (a.x * a.y);
}
2. Passagem por cpia de valor de endereo de array.
#include
float produto (float a);
main(){
float p[2] = {5.0,10.0};
float p_resultado;
p_resultado = produto (p);
printf(Produto = %f, p_resultado);
}
float produto (float a[]){
return (a[0] * a[1]);
}
1.2.1.2. Passagem por cpia de valor de endereo da estrutura.
Passa-se o endereo da estrutura para uma varivel de ponteiro da funo, com isso se
esta passando o mesmo endereo de memria da estrutura original para a funo. No
array a simples passagem do nome do array j a passagem do endereo de memria do
array, j que o compilador interpreta o nome do array como o apontador para ele
mesmo.
ESTRUTURAS: Recebe a copia do endereo da estrutura.
float produto(VETOR *a);
ARRAYS: Recebe a copia do endereo do array.
float produto(float *a);
Exemplos:
1. Passagem por cpia de valor de endereo de estrutura.
#include
typedef struct { float x;
float y;
} VETOR;
float produto (VETOR*);
main(){
VETOR p = {5.0,10.0};
float p_resultado;
p_resultado = produto (&p);
printf(Poduto = %f, p_resultado);
}
floatproduto (VETOR *a){
return (a->x * a->y);
}
2. Passagem por cpia de valor de endereo de array.
#include
float produto (float *a);
main(){
float p[2] = {5.0,10.0};
float p_resultado;
p_resultado = produto (p);
printf(Produto = %f, p_resultado);
}
float produto (float *a){
return (a[0] * a[1]);
}
1.2.1.3. Retorno de uma estrutura a partir de uma funo por valor.
O retorno de uma estrutura por valor nada mais do que retornar o nome da estrutura
pela funo, ou seja, retornar a copia dos valores da estrutura da funo para a estrutura
da funo que chamou a funo.
Exemplo:
#include
typedef struct {float x; float y; } VETOR;
VETOR somaesubtracao(VETOR);
main(){
VETOR p = {5.0,10.0};
VECTOR s;
s = somaesubtracao (p);
printf(Vetor soma e subtracao = {%f,%f},s.x, s.y);
}
VETOR somaesubtracao (VETOR a){
VETOR vs;
vs.x = a.x + a.y;
vs.y = a.x - a.y;
return vs;
}
1.2.1.4. Retorno por cpia de valor de endereo de estrutura.
Exemplo:
#include
typedef struct {float x; float y; } VETOR;
VETOR *somaesubtracao(VETOR);
main(){
VETOR p = {5.0,10.0};
VECTOR *s;
s = somaesubtracao (p);
printf(Vetor soma e subtracao = {%f,%f},s->x, s->y);
}
VETOR *somaesubtracao (VETOR a){
static VETOR vs;
vs.x = a.x + a.y;
vs.y = a.x - a.y;
return &vs;
}
2. PROGRAMA
Fazer um programa em Linguagem C que implemente uma estrutura avio(structaviao),
permitindo o cadastro e a exibio, com os seguintescampos:
modelo;
fabricante;
passageiros;
comprimento;
altura;
velocidade;
altitude;
motor
#include
#include
struct structaviao {
char modelo[100];
char fabricante[100];
int passageiros;
float comprimento;
float altura;
float velocidade;
float altitude;
char motor[100];
};
void saida(struct structaviao);
void entrada(struct structaviao*);
int main (){
struct structaviao a;
entrada(&a);
saida(a);
return 0;
}
void entrada(struct structaviao *b){
printf("Entre o modelo:");
scanf(" %[^\t\n]s", b->modelo);
printf("\nEntre o fabricante:");
scanf(" %[^\t\n]s", b->fabricante);
printf("\nEntre a quantidade passageiros:");
scanf("%d", &b->passageiros);
printf("\nEntre o comprimento:");
scanf("%f", &b->comprimento);
printf("\nEntre a altura:");
scanf("%f", &b->altura);
printf("\nEntre a velocidade:");
scanf("%f", &b->velocidade);
printf("\nEntre a altitude:");
scanf("%f", &b->altitude);
printf("\nEntre o motor:");
scanf(" %[^\t\n]s", b->motor);
}
void saida(struct structaviao b){
printf("\nModelo: %s \n", b.modelo);
printf("Fabricante: %s \n", b.fabricante);
printf("Quantidade de passageiros: %d \n", b.passageiros);
printf("Comprimento: %.2f \n", b.comprimento);
printf("Altura: %.2f \n", b.altura);
printf("Velocidade: %.2f \n", b.velocidade);
printf("Altitude: %.2f \n", b.altitude);
printf("Motor: %s \n", b.motor);
getch();
}