VETORES E STRINGS
int a; // 4 bytes
float x; // 4 bytes
double y; // 8 bytes
char c; // 1 byte
char *c;
// 4 bytes
Vetores
A referncia a uma posio de um vetor indica
o clculo de uma posio de memria a partir
do incio do vetor
float x[1000];
// x[20] est na posio x + 20*sizeof(float)
Vetores
Quando se declara um vetor, o valor entre
colchetes indica quantas vezes o espao de
memria necessrio para o tipo bsico ser
alocado
char v[100]; //
Vetores
C NO AVISA NEM PRODUZ ERRO QUANDO O
LIMITE DE UM VETOR OU MATRIZ FOR
EXCEDIDO
float x[1000];
y = x[2000]; // no d erro, mas vai acessar
// uma parte inesperada da memria
15/Mar/2012
Matrizes
Matrizes
char M[3][5];
v = M[1][4];
M[1][4]
M[1][4]
char *M;
M = (char *) malloc(3 * 5 * sizeof(char));
// acesso a linha i e coluna j em matriz l x c
// v = M[i * c + j]
v = M[1 * 5 + 4];
Strings
Um string um vetor do tipo char
Para manipulao do string, atribuindo e
recuperando valores, e realizando operaes
sobre ele (funes no string.h), importante
entender essa caracterstica
Quando o contedo de um string no ocupa
todo o espao disponvel, usa-se um caractere
\0 (ou NULL, cdigo ASCII 0) como
delimitador
Strings
Strings constantes aparecem no cdigo entre
aspas
printf(%s, Bom dia!);
Tamanho da string:
size_t strlen(char *str);
Strings
No possvel fazer atribuies diretas para
strings
Usar a funo strcpy ou a funo strncpy
Strings
Tamanho da string (no conta o \0):
size_t strlen(char *str);
char s[10];
int tamanho;
// 9
tamanho = sizeof(s);
// 10 (No usar!)
15/Mar/2012
Strings
Na inicializao, pode-se usar o mesmo
recurso disponvel para vetores
char nome[] = {A, n, a, \0};
Strings
Como o nome do string representa o endereo
onde comea o string, possvel manipul-lo
diretamente
Cuidado!
Ou
Exemplo
Strings
Funes
Strings
Comparao de strings
Strings
Strings
Exemplo:
str = algumas palavras;
delim = \n;
token = strtok(str, delim);
printf(%s\n, token);
// stdout: algumas
// stdout: palavras
15/Mar/2012
Strings
Strings
Exemplo
int num = 0; char linha[256];
...
while (!feof(infile)) {
fgets(linha, 256, infile);
p1 = strtok(linha, " \n"); //delim: branco ou fim de linha
while ((p1 != NULL) && (!feof(infile)))
{
num++;
printf("%s\n", p1);
p1 = strtok(NULL, " \n");
}
}
Passagem de Parmetros
Em C++, parmetros para funo podem ser passados
por valor ou por referncia
Por valor: o parmetro formal (recebido no procedimento)
uma cpia do parmetro real (passado na chamada)
Por referncia: o parmetro formal (recebido no procedimento)
uma referncia para o parmetro real (passado na chamada)
As modificaes efetuadas acontecem no parmetro real
Algoritmos e Estrutura de
Dados II