Ir ao conteúdo
  • Cadastre-se

Compilador para notepad++?


danielpcl

Posts recomendados

Acho que é melhor mudar o nome do tópico :lol:

Segue o código

// NewDel.cpp
// Ilustra o uso
// de new e delete.
#include <iostream.h>
int main()
{
// Uma variável local.
int varLocal = 200;
// Um ponteiro para int.
int* pVarLocal = &varLocal;
// Uma variável alocada
// dinamicamente usando new.
int* pHeap;
[B]pHeap = new int;[/B]
[B]if(!pHeap)
{
cout << "\nErro alocando memoria!!! "
"Encerrando...\n";
return 0;
} // Fim de if.[/B]
// Atribui valor à
// variável dinâmica.
*pHeap = 300;
// Faz uma operação.
*pHeap *= 2;
// Exibe valores.
cout << "\n*** Valores ***\n";
cout << "\nvarLocal:\tValor = "
<< varLocal
<< "\tEndereco = "
<< pVarLocal;
cout << "\nVar. dinamica:\tValor = "
<< *pHeap
<< "\tEndereco = "
<< pHeap;
// Libera memória.
delete pHeap;
return 0;
} // Fim de main()

Não entendi aquele if e a parte do new int... o new int não teria que ser declarado antes? E, também, alguém pode me explicar esse if? Não entendi aquele "!pHeap"...

EDIT: já colocando outra dúvida:

// ConstPt.cpp
// Ilustra o uso de
// ponteiros const.
#include <iostream.h>
int main()
{
// Duas variáveis int.
int iVar = 10, iVar2;
// Um ponteiro const
// apontando para iVar.
int* const pConst = &iVar;
// Exibe valores iniciais.
cout << "\n*** Valores iniciais ***\n";
cout << "\nEndereco = "
<< pConst;
cout << "\niVar = "
<< *pConst;
// Faz alterações e
// exibe valores.
(*pConst) += 5;
// OK! iVar
// não é const.
// Exibe novos valores
// de pConst.
cout << "\n*** Novos valores ***\n";
cout << "\nEndereco = "
<< pConst;
cout << "\niVar = "
<< *pConst;
// Tenta alterar pConst.
// ERRO!!! pConst é
// constante.
//pConst = &iVar2;
return 0;
} // Fim de main()

Na apostila diz que não é possivel alterar pConst, mas aí ele faz a soma utilizando pConst e o resultado aparece normalmente, e, também, não entendi o porque daquele "pConst = &iVar2" nos comentários, porque a iVar2 só é declarada, e não aparece em outra momento algum no código.

Link para o comentário
Compartilhar em outros sites

Acho que é melhor mudar o nome do tópico :lol:

Segue o código

// NewDel.cpp
// Ilustra o uso
// de new e delete.
#include <iostream.h>
int main()
{
// Uma variável local.
int varLocal = 200;
// Um ponteiro para int.
int* pVarLocal = &varLocal;
// Uma variável alocada
// dinamicamente usando new.
int* pHeap;
[B]pHeap = new int;[/B]
[B]if(!pHeap)
{
cout << "\nErro alocando memoria!!! "
"Encerrando...\n";
return 0;
} // Fim de if.[/B]
// Atribui valor à
// variável dinâmica.
*pHeap = 300;
// Faz uma operação.
*pHeap *= 2;
// Exibe valores.
cout << "\n*** Valores ***\n";
cout << "\nvarLocal:\tValor = "
<< varLocal
<< "\tEndereco = "
<< pVarLocal;
cout << "\nVar. dinamica:\tValor = "
<< *pHeap
<< "\tEndereco = "
<< pHeap;
// Libera memória.
delete pHeap;
return 0;
} // Fim de main()

Não entendi aquele if e a parte do new int... o new int não teria que ser declarado antes? E, também, alguém pode me explicar esse if? Não entendi aquele "!pHeap"...

EDIT: já colocando outra dúvida:

// ConstPt.cpp
// Ilustra o uso de
// ponteiros const.
#include <iostream.h>
int main()
{
// Duas variáveis int.
int iVar = 10, iVar2;
// Um ponteiro const
// apontando para iVar.
int* const pConst = &iVar;
// Exibe valores iniciais.
cout << "\n*** Valores iniciais ***\n";
cout << "\nEndereco = "
<< pConst;
cout << "\niVar = "
<< *pConst;
// Faz alterações e
// exibe valores.
(*pConst) += 5;
// OK! iVar
// não é const.
// Exibe novos valores
// de pConst.
cout << "\n*** Novos valores ***\n";
cout << "\nEndereco = "
<< pConst;
cout << "\niVar = "
<< *pConst;
// Tenta alterar pConst.
// ERRO!!! pConst é
// constante.
//pConst = &iVar2;
return 0;
} // Fim de main()

Na apostila diz que não é possivel alterar pConst, mas aí ele faz a soma utilizando pConst e o resultado aparece normalmente, e, também, não entendi o porque daquele "pConst = &iVar2" nos comentários, porque a iVar2 só é declarada, e não aparece em outra momento algum no código.

Olha não sou bem chegado a C++, mas segue o mesma lógica do C;

Primeiro declara o ponteiro para um tipo,

int* pHeap;

e depois o aloca, ou seja reserva uma area da memória do heap para o tipo.

pHeap = new (tipo); //aloca a mémoria se possível para o tipo

pHeap = new int; // por exemplo

Se a area que for solicitada estiver indisponível o ponteiro pHeap terá valor nulo, o if reconhece nulo com 0, ou seja falso então e só inverter com um ! para entar no if.

if(!pHeap) { instrução de encerramento} // Significa, se pHeap for um ponteiro inválido ou nulo encerrar o programa.

Agora o segunda questão; Você não entendeu um ponteiro constante só aponta para uma variável, ou seja a endereço que ele recebe é const, e não pode mudá-lo senão dá erro. Então você pode atribuir pois o que muda é o valor de iVar e não pConst.

int* const pConst = &iVar; // atribui o endereço d iVar a pConst, e como ele é declarado const ele não poderá apontar para outra variável senão iVar.

e isso é totalmente válido:

*pConst) += 5; // pois atribui a iVar e não muda o endereço apontado por pConst.

Link para o comentário
Compartilhar em outros sites

Ah, eu tinha feito um calculo no #define que também tinha dado esse número ai, mas considerei errado, e agora até esqueci o que tinha feito :lol:

Mas, esse "e+012" significa o que? Isso seria hexadecimal, octadecimal, ou algo assim?

É representação usando notação científica (potências de base 10). Ao invés de escrever 2000 você pode escrever 2 x 10^3, isto é, 2 x 1000. Convenciona-se o uso da letra e (ou E, maiúscula) para representar a notação em computador, isto é, escreve-se 2e+3 ao invés de 2 x 10^3.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!