segunda-feira, 18 de abril de 2016

Const: controlando variável

Const é um modificador ou qualificador num acesso à variável, na verdade ele trabalha controlando uma variável não permitindo modificações de seus valores.
Uma variável const pode ser inicializada como qualquer outra variável no C, porém, como no meu caso pode ser que o seu compilador a defina como somente leitura se for tentado uma troca
de valores por seu programa.
Neste programa usei a clássica função troca com aplicações de const para mostrar num exemplo claro e prático que valores passados pelos argumentos de função não sofrem alterações, na verdade nem passou pela compilação.
Sabemos que se passarmos um ponteiro para uma função esta função modifica o valor da variável apontada pelo ponteiro, más se const
for aplicado na declaração dos parâmetros de modo algum será modificado.
Para ter sucesso na compilação basta remover const das declarações
das variáveis inteiras dos parâmetros da função troca.

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
void got_color ( int tam_lin_ini , int tam_lin_fim , int tam_ini_col ,
         int tam_fim_col , int a , int b ) {
     int i, e;
     if ( a >= 1 && a <= 16 ) {
         textcolor ( a );
     }
     if ( b >= 1 && b <= 16 ) {
         textbackground ( b );
     }
     for ( i = tam_lin_ini; i < tam_lin_fim ; i++ ) {
         for ( e = tam_ini_col; e < tam_fim_col ; e++ ) {
              gotoxy ( e , i );
              printf ( " " );
         }
     }
}
void troca ( const int *a , const int *b ) {
     *a = 100;
     *b = 200;
}
int main ( ) {
     system ( "title CONST: CONTROLANDO VARIÁVEL" );
     got_color ( 2 , 25 , 3 , 79 , 2 , 15 ); //Moldura
     int a, b;
     textcolor ( LIGHTRED );
     gotoxy ( 28 , 3 );
     printf ( "CONST: CONTROLANDO VARIÁVEL" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 5 );
     printf ( "Digite o valor de A ==> " );
     textcolor ( LIGHTRED );
     scanf ( "%d" , &a );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 7 );
     printf ( "Digite o valor de B ==> " );
     textcolor ( LIGHTRED );
     scanf ( "%d" , &b );
     troca ( &a , &b );
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 9 );
     printf ( "Valores após as trocas " );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 11 );
     printf ( "Valor de A ==> " );
     textcolor ( LIGHTRED );
     printf ( "%d" , a );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 13 );
     printf ( "Valor de B ==> " );
     textcolor ( LIGHTRED );
     printf ( "%d" , b );
     textcolor ( LIGHTMAGENTA );
     gotoxy ( 20 , 16 );
     printf ( "Resultados sem o uso de const nos parâmetros de troca" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 26 , 18 );
     printf ( "Por: " );
     textcolor ( LIGHTBLUE );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 26 , 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 37 , 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     return 0;
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.