Ir ao conteúdo

C++ Array de Struct - C++


Ir à solução Resolvido por Felipe Electronic,

Posts recomendados

Postado

Pessoal, comecei a estudar C++ e apesar de saber bastante coisa de C vi algumas que me deixaram em duvida. Lá no C quando eu criava um array de "struct" a declaração ficava assim:

typedef aluno{
	int matricula;
	char nome[50];
  	float nota;
}Aluno;

Aluno alunos[10];

Já no C++ vi que eu posso fazer desse mesmo jeito, porém vi de outras formas, como essas:

typedef aluno{
	int matricula;
	std::string nome;
  	float nota;
}Aluno;

Aluno alunos[10];
//ou
Aluno alunos = new Aluno[10];
//ou
Aluno *alunos = new Aluno[3];
Aluno a1, a2, a2;
alunos[0] = a1;
alunos[1] = a2;
alunos[2] = a3;

Meu questionamento é, qual delas é a "correta" e quais as diferenças entre elas?

  • Curtir 1
Postado

Olá, 

 

na pratica não há diferenças, pode talvez gerar alguma diferença de performasse ao utilizar o numerador *, já que sua função principal é de multiplicação matemática, podendo talvez criar uma ambiguidade desnecessária.

 

Para mim isso é uma novidade, fui pesquisar a respeito e encontrei essa orientação do site da Microsoft.

 

  Citação

O operador * também é usado para declarar tipos de ponteiro e para desreferenciar ponteiros.Esse operador pode ser usado somente em contextos não seguros, indicado pelo uso da palavra-chave unsafe e exigindo a opção do compilador /unsafe. O operador de desreferenciamento é também conhecido como operador de indireção.

Tipos definidos pelo usuário podem sobrecarregar o operador binário * (consulte operador).Quando um operador binário está sobrecarregado, o operador de atribuição correspondente, se houver, também estará implicitamente sobrecarregado.

Expandir  

 

FONTE: https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/multiplication-operator

 

  • Curtir 1
  • Obrigado 1
  • Solução
Postado

O Colega acima ja respondeu. Ambas as formas são válidas do ponto de vista de OBEDECER A SINTAXE da linguagem, do ponto de vista de desenvolvimento vai depender muito mais da aplicação de das restrições de alocação de memória que você tiver, por exemplo ao usar o operador new, a memoria alocada vem de uma região chamada heap, e mesmo que você aloque memoria dentro de uma função, com o new, sem dar delete depois do uso aquela memoria ficará alocada e sem condições de ser reutilizada, sendo de um modo geral pouco recomendado o seu uso (existem momentos certos para o uso de alocação dinamica com o new/delete mas foge ao escopo do topico).

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades sobre tecnologia do Brasil. Leia mais

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...