Em C existem vetores unidimensionais e bidimensionais, ambos são estruturas homogenias ordenadas e que podem assumir um número de elementos finitos.
Para declarar um vetor, usa-se o a seguinte notação:
tipo nome_vetor [intervalo]
O menor elemento do vetor é chamado limite mínimo e, em C, é sempre 0, e o maior elemento é chamado limite máximo. O número de elementos no vetor é chamado de faixa, a faixa pode ser obtida com limite máximo - limite mínimo - 1 = faixa.
Em C os limites não podem serem alterados durante a execução do programa, o limite mínimo é sempre fixado em 0, o limite máximo é fixado quando é escrito. Uma técnica que muitos programadores utilizam para simplificar a manutenção do código, é o emprego de um identificador de constante.
Para declarar um vetor, usa-se o a seguinte notação:
tipo nome_vetor [intervalo]
O menor elemento do vetor é chamado limite mínimo e, em C, é sempre 0, e o maior elemento é chamado limite máximo. O número de elementos no vetor é chamado de faixa, a faixa pode ser obtida com limite máximo - limite mínimo - 1 = faixa.
Em C os limites não podem serem alterados durante a execução do programa, o limite mínimo é sempre fixado em 0, o limite máximo é fixado quando é escrito. Uma técnica que muitos programadores utilizam para simplificar a manutenção do código, é o emprego de um identificador de constante.
//sem idenficador
int main() {
int vetor[100];
return 0;
}
#define LIM 100
int main() {
int vetor[LIM];
return 0;
}
Vetores como parâmetros
Como uma variável vetor em C é um ponteiro, os parâmetros vetores são passados por referência em vez de por valor. O conteúdo de um vetor não é copiado quando passado como um parâmetro, em vez disso é passado o seu endereço de memória.
A passagem por referência é muito mais eficiente, já que ela poupa espaço e tempo. Espaço porque não há necessidade de uma segunda cópia do vetor, já que este será modificado diretamente, com isso há um ganho de tempo.
Uma string tem limite minimo igual a 0 e seu limite máximo é o número de caracteres na string. Exemplo:
"Guilherme" é um vetor de 10 elementos (a tecla de escape é contada).
Isso define um novo vetor contendo três elementos. Cada um desses elementos é em si mesmo um vetor contendo cinco inteiros. Um elemento desse vetor é acessado especificando-se dois índices: um número de linha e um número de coluna.
A passagem por referência é muito mais eficiente, já que ela poupa espaço e tempo. Espaço porque não há necessidade de uma segunda cópia do vetor, já que este será modificado diretamente, com isso há um ganho de tempo.
#include <stdio.h>
#define SIZE 10
//PERCEBA QUE NÃO É NECESSÁRIO A PASSAGEM DO TAMANHO DE MEU VETOR
void _preencheVetor(int []);
void _preencheVetor(int v[]) {
int i;
for(i = 0; i < SIZE; i++) {v[i] = 1;}
}
void _exibeVetor(int v[]) {
int i;
for(i = 0; i < SIZE; i++) {printf("%d\t", v[i]);}
}
int main() {
int v[SIZE];
_preencheVetor(v);
_exibeVetor(v);
return 0;
}
Cadeia de caracteres (String) em C
Em C uma string é definida como um vetor de caracteres. O carácter NULL é responsável por encerrar uma string, esse caractere é inserido automaticamente ao final de toda string. O caractere NULL é representado pela sequencia de escape \0.Uma string tem limite minimo igual a 0 e seu limite máximo é o número de caracteres na string. Exemplo:
"Guilherme" é um vetor de 10 elementos (a tecla de escape é contada).
Operações com Strings
Agora vamos implementar algumas operações para manipular Strings.- Encontrar o tamanho da string (strlen);
- Concatenar strings (strcat).
int strlen(char []);
int strlen(char array[]) {
int i;
for(i = 0; array[i] != '\0'; i++)
return i;
}
int main() {
char array[100];
printf("\nNúmero de elementos = %d", strlen("GUILHERME"));
return 0;
}
#include <stdlib.h>
char *concat(char *s1, const char *s2)
{
char *ps1 = s1;
while(*ps1)
ps1++;
while(*ps1++ = *s2++);
return s1;
}
int main(int argc, char *argv[])
{
char nome[10] = "Guilherme";
char sobrenome[10] = " Carvalho";
char *resultado = concat(nome, sobrenome);
printf("%s\n\n", resultado);
return 0;
}
Vetores bidimensionais
O tipo dos componentes de um vetor pode ser outro vetor. Por exemplo, podemos definir:
int m[3][5];
Isso define um novo vetor contendo três elementos. Cada um desses elementos é em si mesmo um vetor contendo cinco inteiros. Um elemento desse vetor é acessado especificando-se dois índices: um número de linha e um número de coluna.