Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

killezio

Dúvida em sintaxe

Mensagens Recomendadas

killezio

esta linha aqui


const char * const quads[16] ={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};

os dois const estão me a confundir. alguem me pode explicar a função de cada um aqui?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

killezio,

Significa que tens 16 apontadores constantes para chars também eles constantes (lê a declaração da direita para a esquerda).

Por outras palavras, não só não podes alterar o endereço presente em quads (para substituir uma string por outra, por exemplo), como também não podes alterar directamente uma das strings apontadas por quads.

Sei que provavelmente não me expliquei muito bem, mas se precisares de mais esclarecimentos, diz.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
killezio

já entendi. só nao percebo qual a utilidade de usar "const". se não vamos querer alterar algo basta nao alterá-lo não é? ou ao usar const ajuda na velocidade ou memória utilizada pelo programa?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Essencialmente o const está lá para te ajudar a ti, programador. Com essa «dica», o compilador pode avisar-te que estás a fazer coisas que não deves (como utilizar quads para alterar o seu conteúdo), evitando assim erros em tempo de execução.

Certamente concordas que, em código de grande escala, não basta pensarmos que não vamos alterar algo que não é para alterar. Podemos alterar por acidente, e o const ajuda a prevenir isso.

Em termos de optimização não há ganhos. Talvez possa haver quando se utiliza restrict em conjunto com const, mas sinceramente não sei (e foge ao âmbito da tua questão).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
killezio

Penso que não faz muita diferença em ter feito a segunda pergunta aqui ou ter criado outro tópico com a segunda pergunta. talvez se tivesse feito isso tinhas-me dito que estava a repetir conteúdo de outro tópico haha

EDIT: e obrigado pelo esclarecimento.

Editado por killezio

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Penso que não faz muita diferença em ter feito a segunda pergunta aqui ou ter criado outro tópico com a segunda pergunta. talvez se tivesse feito isso tinhas-me dito que estava a repetir conteúdo de outro tópico haha

Quando disse que fugia ao âmbito da tua questão não foi com intenção de criares outro tópico; fizeste muito bem em colocar a questão neste tópico, pois vem em seguimento da tua primeira pergunta.

O que fica fora do âmbito do tópico é a explicação do que é restrict e de que forma a sua interacção com const podem gerar optimização potencial, apenas isso ;)

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.