Ir para conteúdo
Fórum Script Brasil
  • 0

Por que quando vou invocar a função chamando um vetor eu não preciso usar [] ?


lnfernandobr

Pergunta

Exemplo de código:

 

#include <stdio.h>
#define DIM 5
int main() {

	int copia[DIM];
	int original[DIM];
	int dobrado[DIM];

	void recebe(int original[] );
	recebe( original[]);

	return 0;
}

void recebe(int original[] ) {

	for (int i = 0; i < DIM; ++i) {
		printf("Entre com o elemento: ");
		scanf("%d", &original[i] );
	}
}

Ali no recebe(original[]) com o -> [] da erro, por que não posso colocar e por que não precisa colocar ?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

você sabe que é um array? Um array nada mais é que um conjunto de dados de um mesmo tipo alojado na memoria do computador apontado por um ponteiro na sua primeira casa. você tem que prestar atenção na parte apontado por um ponteiro e na sua primeira casa. A efeitos original é a mesma coisa que &original[0]... um ponteiro que aponta para a primeira casa do vetor(origina[0]).

Imagine isso que fosse possível fazer algo como:
int original[DIM];
int * original = &original[0];

Que falha aí? Que as 2 variáveis são iguais!! Mas a efeitos é isso mesmo. A palavra original sem [ nem ] tem o mesmo efeito que original[0] e com o & extraímos a direção da primeira casa do vetor. Por isso da igual você mandar original ou &original[0] é a mesma coisa. Quando estudar ponteiros você entenderá melhor.
 

Link para o comentário
Compartilhar em outros sites

  • 0

exato

prove isso:

printf("%d", original);
printf("%d", &original[0]);

É a mesma coisa... isso é o que recebe a função

 

prove isso:

printf("%d", original);
printf("%d", &original[0]);

É a mesma coisa... isso é o que recebe a função

 

A efeitos

void recebe(int original[] )

é a mesma coisa que

void recebe(int * original )

Por isso você só deve passar a direção do primeiro elemento. Ou outro qualquer recebe(&original[10]) por exemplo

 

A efeitos

void recebe(int original[] )

é a mesma coisa que

void recebe(int * original )

Por isso você só deve passar a direção do primeiro elemento. Ou outro qualquer recebe(&original[10]) por exemplo

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...