2
respostas

A variavel texto atualiza o conteudo, a variavel numero não, por que?

Conforme código abaixo, quando atualiza a variável texto dentro da funcao, quando faz o printf fora da função o valor está atualizado, ja a variavel numero não, poderia por favor avaliar ?

A variável do tipo char atualiza, já a variável numérica não, o campo fica com o mesmo valor de antes da função.

#include <stdio.h>

void potencia(char texto[2], int numero) { texto[0] = 'C'; texto[1] = 'D';

numero++;

printf("%s\n", texto);
printf("%d", numero);

}

int main() {

    int numero = 1;
char texto[2];

texto[0] = 'A';
texto[1] = 'B';

printf("%s\n", texto);
printf("%d", numero);
potencia(texto, numero);

printf("%s\n", texto);
printf("%d", numero);

}

2 respostas

Para que a função altere a variável numero, você terá que usar ponteiro.

#include <stdio.h>

void potencia(char texto[2], int *numero)
{
    texto[0] = 'C';
    texto[1] = 'D';

    (*numero)++;

    printf("%s\n", texto);
    printf("%d\n", *numero);
}

int main()
{
    int numero = 1;
    char texto[3];

    texto[0] = 'A';
    texto[1] = 'B';
    texto[2] = '\0';

    printf("%s\n", texto);
    printf("%d\n", numero);
    potencia(texto, &numero);

    printf("%s\n", texto);
    printf("%d\n", numero);

    return 0;
}

Toda função em C, sem a utilização de ponteiros, é limitada a apenas um retorno. Por mais que você esteja enviando dois valores como parâmetros, a função potencia() só conseguirá retornar um valor. Como o companheiro disse acima, caso deseje retornar mais de um valor, utilize ponteiro. Porém para o problema apresentado, porém invoco um questionamento, será que há a necessidade de enviar dois valores como parâmetros?