Ir ao conteúdo
  • Cadastre-se

Trabalhando com stdbool.h


Pedro Aldá

Posts recomendados

Olá computeiros,

 

Estava eu fazendo trabalho de criptografia e me deparei com um situação que eu não entendi...Segue o código.
 

#include <stdio.h>
#include <stdbool.h>

void teste(bool *v[2][2]){

    printf("%d %d\n%d %d\n\n",&(v[0][0]),&(v[0][1]),&(v[1][0]),&(v[1][1]));
}


int main (void){
    bool v[2][2] ={{0,0},{0,0}};
    teste(v);
    printf("%d %d\n%d %d\n",&(v[0][0]),&(v[0][1]),&(v[1][0]),&(v[1][1]));
    return;
}

Ocorre que a saída do programa foi:

6356748 6356752
6356756 6356760

6356748 6356749
6356750 6356751

Os prints não deveriam ser iguais?:huh:

 

Queria mandar um beijo especialmente para minha mãe!

 

 

Link para o comentário
Compartilhar em outros sites

Você está mandando um tipo diferente do que é esperado pela função, pois na função a variável declarada é *v[2][2], mas no main a variável é v[2][2].

 

Para obter o resultado correto o código deve ser assim:

#include <stdio.h>
#include <stdbool.h>

void teste(bool v[2][2]){

    printf("%d %d\n%d %d\n\n",&(v[0][0]),&(v[0][1]),&(v[1][0]),&(v[1][1]));
}


int main (void){
    bool v[2][2] ={{0,0},{0,0}};
    teste(v);
    printf("%d %d\n%d %d\n",&(v[0][0]),&(v[0][1]),&(v[1][0]),&(v[1][1]));
    return;
}

Com tipo compatível na função com o que é enviado pelo main().

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...