Ir ao conteúdo
  • Cadastre-se
nanquinote

Vetor dinâmico

Recommended Posts

Bom dia, comecei a ler sobre alocação dinâmica de memória, e a página que estou lendo diz: 

Citação

Vamos voltar a uma ponta solta num dos capítulos anteriores, onde queríamos fazer com que o utilizador dissesse quantos elementos do array é que se deveria utilizar. Já dissemos antes que o declarador do nº de elementos do array tem de ser ou uma constante ou um literal, mas não pode ser uma variável. Isso dá erro.

 

Só que fiz o exemplo abaixo como teste e roda perfeitamente:

 

#include <iostream>
using namespace std;

int main(){
	int tam;
	cout << "Entre com tamanho do array: " << endl;
	cin >> tam;
	int vetor[tam];
	for(int i=0; i<tam; i++){
		vetor[i] = i;
	}
	for(int i=0; i<tam; i++){
		cout << vetor[i] << endl; 
	}


	return 0;
}

Por que está rodando? A página está desatualizada ou estou deixando passar alguma coisa? É versão mais atual da linguagem que permite?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @nanquinote

Resumindo tudo/ Você supos que é uma nova versão da linguagem que suporte esta condição; e acertou é isto mesmo.

Objeto é dado o nome de VLA, permitindo definir tamanhos vetores por variáveis. Tratado oficialmente na versão C'11, e ignorado na versão C'99. 

Editado por Mauro Britivaldo
Sintaxe
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo Pode citar referencias? Eu nunca tinha ouvido falar isso.

Em c é sabido que não se deve usar variáveis porque deveriam ser constantes, porém existe um truque que sim funciona e faz com que o compilador não grite:
const int TAM = 10;
int n;
scanf("%d",n);
int vetor[TAM+n];

Isso faz com que não mostre nem avisos, porém é gambiarra, nós estamos enganando o compilador. >_<

 

Edito:
Ja me informei! VLA "array de tamanho variável" suportado oficialmente no padrão C99 e opcional no padrão c11, não suportado no padrão c90. Valeu pela info, todos os dias se aprende algo novo =D
 

 

Editado por vangodp
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente! Antes do C'99 não podíamos. 
A unica solução era por função: malloc 

 

@nanquinote Estou estudando em casa pelo livre de Deitel,  

recomendo seus exercício que são todos ótimos para ajudar na fixação do assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×