Em algumas ocasiões um programa em C pode exigir
o uso de uma variável global, que como sabemos
estas variáveis podem ser usadas por todo o programa,
em qualquer bloco de código.
Estas variáveis estão aptas a manter seus valores
enquanto o programa estiver sendo executado.
Para criar uma variável global, basta declará-la
fora de todas as funções do programa, de preferência
no início, sendo que sua declaração pode ser feita
antes da função main(); desde que não seja usada
em alguma função do programa.
Devemos evitar que o nome de uma variável global
seja o mesmo que de uma local, evitando assim conflitos
entre as duas onde a referência se dará a variável
local anulando os efeitos da global.
Já que variáveis globais ocupam espaços na memória
durante todo tempo em que o programa está em execução,
elas devem ser evitadas, isto torna um desperdício de memória
procure sempre substituir por uma local se possível.
Más o programa aqui proposto traz praticamente uma novidade,
inicializei um vetor de ponteiro para char na função copia_valores ( );
e fiz a cópia no vetor de ponteiro char *str [ 10 ];
que foi declarado como global, fiz o mesmo com o vetor de inteiro Vet [ 10 ];
também declarado nesta mesma função, fazendo a cópia no vetor global de inteiros,
de nome Vetor [ 10 ]. Note que o procedimento normal seria passá-los
como parâmetros para a função repr_matriz ( ); onde serão imprimidos por printf();
esta alternativa é bem válida principalmente quando já temos uma função com vários
parâmetros e precisamos passar outros valores, vindo tornar o código mais complicado.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio2.h>
char *str [ 10 ];
int Vetor [ 10 ];
void Janela5 ( ) {
int lin, col;
for ( lin = 0; lin <= 25; lin++ ) {
for ( col = 0; col <= 80; col++ ) {
gotoxy ( col, lin );
if ( lin == 2 ) {
textbackground ( LIGHTBLUE );
printf ( " " );
}
if ( col == 1 ) {
textbackground ( LIGHTBLUE );
printf ( " " );
}
if ( lin == 25 ) {
textbackground ( LIGHTBLUE );
}
if ( col == 80 ) {
textbackground ( LIGHTBLUE );
printf ( " " );
}
}
}
textbackground ( BLACK );
}
void repr_matriz ( ) {
unsigned int i;
textcolor ( LIGHTBLUE );
gotoxy ( 20, 5 );
printf ( "Abaixo, a cópia do vetor de ponteiros para char" );
textcolor ( LIGHTGREEN );
for ( i = 0; i < strlen ( *str ); i++ ) {
gotoxy ( 25, i + 7 );
printf ( "%s", str [ i ] );
}
getche ( );
textcolor ( LIGHTBLUE );
gotoxy ( 20, 18 );
printf ( "Abaixo, a cópia do vetor de inteiros" );
textcolor ( LIGHTRED );
gotoxy ( 24, 20 );
for ( i = 0; i < 10; i++ ) {
printf ( " %d ", Vetor [ i ] );
}
Sleep ( 1800 );
textcolor ( WHITE );
gotoxy ( 45, 11 );
printf ( "Criado por:" );
textcolor ( LIGHTRED );
printf ( " Samuel Lima " );
textcolor ( LIGHTRED );
gotoxy ( 36, 23 );
printf ( "MUITO OBRIGADO" );
getche ( );
exit ( 0 );
}
void copia_valores ( ) {
unsigned int i;
int a = 0, b = 0;
int Vet [ 10 ] = { 9, 2, 3, 4, 8, 6, 7, 8, 9, 7 };
for ( i = 0; i < 10; i++ ) {
Vetor [ a ] = Vet [ i ];
a++;
}
char *Nomes_Alunos [ 10 ] = { "Éder Costa", "Humberto Gomes",
"Dijalma Lacerda", "Caroline Silva", "Igor Gonçalves",
"Bruna Carla ", "Fábio Quadros", "Geany Barros", "Jaqueline Vega",
"Ana Célia" };
for ( i = 0; i < strlen ( *Nomes_Alunos ); i++ ) {
//memcpy ( str, Nomes_Alunos , sizeof ( str ) );
str [ b ] = Nomes_Alunos [ i ];
b++;
}
}
int main ( ) {
system ( "title VARIÁVEIS GLOBAIS" );
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 33, 3 );
printf ( "VARIÁVEIS GLOBAIS" );
copia_valores ( );
repr_matriz ( );
getche ( );
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.