Por exemplo, esta variável :
É uma array que pode estocar 10 ints
Podemos por um elemento em qualquer posição da lista mesmo não tento elementos à sua direita e esquerda, por exemplo :
int luckyNumbers [10]
luckyNumbers [1] = 80
printf ("%d), luckyNumbers [1] )
/* O programa vai mostrar o 80 que está na posição 1,
mesmo que não exista um elemento na pisição 0 /*
Outro exemplo :
int numbers [ ] = {4, 8, 15, 16, 23, 42}
Para aceder a um posição especifica da lista :
printf (" %d", numbers [0] ) —> 4
printf (" %d", numbers [2] ) —> 15
Para modificar um elemento de uma determinada posição da lista :
numbers [1] = 200 —> {4, 200, 15, 16, 23, 42}
int main () {
int x;
int y [10]; // Os indices da array vai de 0 (sendo o primeiro element) a 9 (sendo o ultimo elemento)
// 10 é a dimensao da array
// ==> Quando definimos um array, somos obrigados de indicar a dimensao !!!
int y [] = {1,2,3,4,5,6,7,8,9,10} // A dimensao sera a quantidade de elementos que esta na array ja inicializada
// Nao é possivel mudar o tamanho da array posteriormente
/* Isto nao é possibel */
///////////////////////////////////////
int y [10] //
y = {1,2,3,4,5,6,7,8,9,10} //
///////////////////////////////////////
int y [10] = {1,2,3,4,5,6,7,8,9,10}//
int b [10]; //
y = b; //
///////////////////////////////////////
return 0;
}
Função para copiar elementos de uma array para outra array :
void copiaArray (int destino [], int origem []) { // No argumento de uma funçao, nao ha necessidade de indicar a dimensao
int i;
for (i=0; i<10; i++)
destino [i] = origem [i];
}
// Para esta funçao poder ser utilizada para arrays de nao importa a dimensao, podemos fazer assim :
void copiaArray (int destino [], int origem [], int N) {
int i;
for (i=0; i<N; i++)
destino [i] = origem [i];
}
//
int main () {
int i;
int y [10] = {1.2.3.4.5.6.7.8.9.10}
int b [10]
copiaArray (b, y, 10);
return 0;
}
**!!!**
**/*** Se usarmos o C Tutor, podemos ver que o int y [10], é o indereço de memória aonde fica o array e cria um pointer;
Logo a funcao Array nao cria uma copia, ela modifica diretamente o int y [10];
Logo o b e o y ja sao endereços de memoria, logo nao é necessario usar &y e &b;
Logo ao passarmos uma Array num argumento da funcao, ela vai de fato escrever diretamente no array e nao sobre uma copia. ***/**
array = endereço de memória, logo se passar um array numa função e nessa função modificarmos o array, ele na main também será modificado.
Se somarmos um int a um array (ou seja endereço de memória), será como mover aonde o array começará (se for um long int será movido 2x mais) :