Ir ao conteúdo
  • Cadastre-se

C Porque esse vetor funciona?


OtakuNovo

Posts recomendados

 

Boa noite,Boa tarde,Bom dia;

então eu tive umas aulas de c e nas aulas de c o professor falou que um vetor[n] poderia usar somente as posições N-1 mas agora eu estou tentando entender o do porque estou conseguindo usar a posição N?

ex

int vet[10];

aqui eu consigo usar 11 posições

fica a duvida agora como funciona?

#include <stdio.h>
#include <stdlib.h>
int main(){
	int vet[10];
	int contador=0;
	for(contador=0;contador<=10;contador++){
		vet[contador]=contador;
	}
	for(contador=0;contador<=10;contador++){
		printf("%d\n",vet[contador]);
	}
	return 0;
}

Saída:

0
1
2
3
4
5
6
7
8
9
10

 

Link para o comentário
Compartilhar em outros sites

Por que é C!

 As linguagens da baixo e médio nível, C é uma delas, nos permite acessar locais além do reservado.

Imagine a memória no C como se fosse um calçada da rua, você anda sobre a calçada e ver uma aviso: Não pise aqui!

Então você pisa. Duas coisa pode acontecer; Tudo ou Nada.

Assim é o acesso da memória em C, você sabe que existe restrições e que pode ocasionar problemas ou travar se estiver acessando aquém ou além do reservado, porém nada te impedirá de fazer isso e correr o riso.

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, AnsiC disse:

Por que é C!

 As linguagens da baixo e médio nível, C é uma delas, nos permite acessar locais além do reservado.

Imagine a memória no C como se fosse um calçada da rua, você anda sobre a calçada e ver uma aviso: Não pise aqui!

Então você pisa. Duas coisa pode acontecer; Tudo ou Nada.

Assim é o acesso da memória em C, você sabe que existe restrições e que pode ocasionar problemas ou travar se estiver acessando aquém ou além do reservado, porém nada te impedirá de fazer isso e correr o riso.

Naverdade mesmo sendo c ele impede sim se ali usar o vet[N+1] da erro

ex como meu vet[10] se eu tentar acessar o vet na posição 11 vai dar erro;

e se ao caso eu tentar acessar os endereços de outro programa o c não deixa

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

11 minutos atrás, OtakuNovo disse:

Naverdade mesmo sendo c ele impede sim se ali usar o vet[N+1] da erro

ex como meu vet[10] se eu tentar acessar o vet na posição 11 vai dar erro;

e se ao caso eu tentar acessar os endereços de outro programa o c não deixa

Depende do compilador, e das configurações nele adotada. 

Nas minhas configurações não dei importância a essa configuração.

 

A linguagem em si, não tem restrição para overflow,

Por uma questão de exercício desativei do GCC de alerta-me sobre isso.

 

Repetido a linguagem C não tem exception para bounds  overflow somente consequências.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

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...