Erro: Int não pode ser desreferenciado em C++

Erro Int Nao Pode Ser Desreferenciado Em C



As linguagens de programação precisam de bibliotecas, funções, sintaxe e outras coisas ao trabalhar com elas. Portanto, há uma chance de que nossos códigos contenham erros. A programação em C++ tem muitos tipos distintos de erros. Discutiremos sobre o erro “int não pode ser desreferenciado em C++” aqui. Este erro ocorre quando tentamos utilizar o operador de desreferência “*” com os dados do tipo inteiro “int” porque “int” é um tipo de dados primitivo. Não podemos desreferenciar o “int” na programação C++. Aqui, o erro “int não pode ser desreferenciado em C++” e sua solução será explorada minuciosamente. Alguns códigos são fornecidos neste guia nos quais veremos como esse erro ocorre e como lidar com esse tipo de erro em C++.

Exemplo 1: Desreferenciando Int







Neste código, tentaremos desreferenciar o “int” em C++. Agora, simplesmente incluímos o arquivo de cabeçalho “iostream” para utilizar as funções definidas. Abaixo disso, utilizamos o “namespace std” e invocamos o método “main()” aqui. Em seguida, declaramos a variável “my_num” com o tipo de dados “int” e atribuímos “99” a esta variável.



Agora, declaramos “my_value” do tipo de dados “int” e inicializamos com “*my_num”, o que significa que estamos tentando desreferenciar a variável “my_num” que é do tipo de dados “int”. O erro é gerado nesta linha durante a compilação porque não podemos desreferenciar o “int”. Queremos exibir o valor que obtemos após desreferenciar int, então colocamos o “cout” no qual adicionamos a variável “my_value”.



Código 1:





#include
usando namespace std;
principal interno ( ) {
int meu_num = 99 ;
int meu_valor = * meu_núm;
corte << 'O valor que obtemos ao desreferenciar o int é:' << meu_valor << fim;
retornar 0 ;
}

Saída:



Aqui, podemos notar que nenhum valor é exibido e ocorre um erro que diz que há um argumento de tipo unário “*” inválido. Isso significa que não podemos desreferenciar o “int” em C++.

Solução 1: sem desreferenciação

Aqui, obteremos o valor inteiro diretamente, sem desreferenciar. Importamos o arquivo de cabeçalho “iostream” porque algumas definições de função estão presentes. Em seguida, digitamos “namespace std” junto com a palavra-chave “using” e chamamos o método “main()” aqui. Agora, inicializamos a variável “my_num” do tipo de dados “int” com o valor “99”.

Em seguida, inicializamos outra variável com o nome “my_value” e atribuímos a ela a variável “my_num” que contém o número inteiro. Depois disso, obtemos esse valor inteiro diretamente, sem desreferenciar, colocando “my_value” no “cout”. Isso obtém e exibe o valor inteiro.

Código 1:

#include
usando namespace std;
principal interno ( ) {
int meu_num = 99 ;
int meu_valor = meu_num;
corte << 'O valor que obtemos sem desreferenciar o int é:' << meu_valor << fim;
retornar 0 ;
}

Saída:

O valor inteiro é renderizado aqui e obtemos sem desreferenciar em nosso código C++. Acessamos diretamente esse valor inteiro e o exibimos.

Solução 2: desreferenciando o ponteiro

O arquivo de cabeçalho “iostream” contém certas definições de funções; nós os importamos. A seguir, executamos a função “main()” aqui após digitar “namespace std” e a palavra-chave “using”. A variável “my_num” do tipo de dados “int” agora é inicializada com o valor “99”.

Depois disso, inicializamos um ponteiro “my_ptr” e atribuímos o endereço da variável “my_num” a este ponteiro. Abaixo disso, desreferenciamos o ponteiro e atribuímos o valor que obtemos por meio dele à variável “my_value” conforme inicializamos “my_value” com “*my_ptr”. Agora, colocamos o “cout” no qual passamos a variável “my_value” para exibir o valor inteiro que obtemos ao desreferenciar o ponteiro.

Código 2:

#include
usando namespace std;
principal interno ( ) {
int meu_num = 99 ;
interno * meu_ptr = & meu_núm;
int meu_valor = * meu_ptr;
corte << 'O valor de int que obtemos ao desreferenciar um ponteiro é:' << meu_valor << fim;
retornar 0 ;
}

Saída:

O valor inteiro que obtemos após desreferenciar o ponteiro em nosso código agora é exibido aqui. Portanto, esta é a maneira correta de aplicar a desreferenciação em C++.

Exemplo 2: Desreferenciando Int

Vamos tentar desreferenciar o “int” em C++ neste código. Para utilizar as funções definidas em “iostream”, precisamos apenas incluir o arquivo de cabeçalho “iostream”. É aqui que usamos o “namespace std” e chamamos a função “main()”. A seguir, criamos a variável “a” e atribuímos a ela o tipo de dados “int” junto com o valor “75”.

Abaixo disso, criamos um ponteiro chamado “newPointer” e atribuímos o endereço da variável “a” a este ponteiro com o auxílio de “&”. Em seguida, inicializamos a variável “num” abaixo com “*a”, o que indica que estamos tentando desreferenciar a variável “a” que é do tipo de dados “int”. Como não podemos desreferenciar o “int”, agora é produzido um erro nesta linha durante a compilação. Depois disso, utilizamos também o “cout” no qual adicionamos a variável “num”.

Código 2:

#include
usando namespace std;
principal interno ( ) {
int a = 75 ;
interno * novoPonteiro = & a;
número interno = * a;
corte << 'O valor que desreferencia o int é:' << num << fim;
retornar 0 ;
}

Saída:

Aqui, podemos ver que não há valor mostrado e uma mensagem de erro informando um “parâmetro de tipo unário inválido”*” aparece. Isso indica que o “int” não pode ser desreferenciado em C++.

Solução 1: sem desreferenciação

Não precisaremos desreferenciar para obter o valor inteiro imediatamente. Nós o importamos porque o arquivo de cabeçalho “iostream” contém certas definições de função. A função “main()” é então invocada após as palavras-chave “using” e “namespace std” serem inseridas. A variável “a” do tipo de dados “int” agora é inicializada com o valor “75”. Em seguida, inserimos o “a” no “cout” para obter esse valor inteiro imediatamente, sem desreferenciação. Isso recupera o valor inteiro e o mostra aqui.

Código 1:

#include
usando namespace std;
principal interno ( ) {
int a = 75 ;
corte << 'O valor que obtemos sem desreferenciar é:' << a << fim;
retornar 0 ;
}

Saída:

O valor inteiro obtido de nosso código C++ sem desreferenciação é apresentado aqui. Este valor inteiro é imediatamente acessível e é mostrado aqui.

Solução 2:

Importamos o arquivo de cabeçalho “iostream” contendo algumas definições de funções. Aqui, digitamos as palavras-chave “namespace std” e “using” antes de executar a função “main()”. O valor “75” é atribuído à variável “a”.

A seguir, declaramos um ponteiro chamado “mypointer” e o inicializamos com o endereço da variável “a” para ele. Abaixo disso, desreferenciamos o ponteiro e atribuímos o valor que obtemos dele à variável “resultado” à medida que inicializamos o “resultado” com “*mypointer”. Após desreferenciar o ponteiro, colocamos o comando “cout” e passamos a variável “resultado” para mostrar o valor inteiro.

Código 2:

#include
usando namespace std;
principal interno ( ) {
int a = 75 ;
interno * meu ponteiro = & a;
resultado interno = * meu ponteiro;
corte << 'O valor que obtemos ao desreferenciar o ponteiro é:' << resultado << fim;
retornar 0 ;
}

Saída:

Esta é a técnica adequada para aplicar desreferenciação em C++. Ele renderiza o valor inteiro que obtivemos após desreferenciar o ponteiro em vez de desreferenciar o “int”.

Conclusão

Exploramos que quando tentamos obter o valor desreferenciando o “int” em C++, ocorrerá o erro “parâmetro de tipo inválido de unário “*” com int”, o que significa que “int não pode ser desreferenciado em C++”. Também explicamos a solução para esse erro. Utilizamos o código em que ocorreram os erros e os códigos nos quais fornecemos a solução desse erro neste guia.