mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 18:16:37 -03:00
vetores multidimensionais e ponteiros
This commit is contained in:
parent
48b4393585
commit
183af0896e
1 changed files with 74 additions and 23 deletions
|
@ -1,33 +1,84 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void print_list(char *list[]);
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
|
||||||
|
char *str[] = {
|
||||||
|
"carro",
|
||||||
|
"bola",
|
||||||
|
"peteca",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
// Iterando os caracteres de str[0] com notação de vetores multidimensionais...
|
||||||
|
i = 0;
|
||||||
|
while (str[0][i] != '\0') {
|
||||||
|
printf("str[0][%d] => %c\n", i, str[0][i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Iterando caracteres de str[0] com aritmética de vetores...
|
||||||
|
i = 0;
|
||||||
|
while (*(str[0]+i) != '\0') {
|
||||||
|
printf("*(str[0]+%d) => %c\n", i, *(str[0]+i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Iterando caracteres de str[0] com aritmética de ponteiros...
|
||||||
|
i = 0;
|
||||||
|
while (*(*str+i) != '\0') {
|
||||||
|
printf("*(*str+%d) => %c\n", i, *(*str+i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Passando o endereço str[0] para um ponteiro...
|
||||||
|
char *uma_coisa = str[0];
|
||||||
|
|
||||||
|
// Iterando os caracteres no endereço com notação de subscrito...
|
||||||
|
i = 0;
|
||||||
|
while (uma_coisa[i] != '\0') {
|
||||||
|
printf("uma_coisa[%d] => %c\n", i, uma_coisa[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Iterando caracteres no endereço com aritmética de ponteiros...
|
||||||
|
i = 0;
|
||||||
|
while (*(uma_coisa+i) != '\0') {
|
||||||
|
printf("*(uma_coisa+%d) => %c\n", i, *(uma_coisa+i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Passando o endereço de str para um "ponteiro para ponteiro para char"...
|
||||||
|
char **coisas = str;
|
||||||
|
|
||||||
|
// Iterando o primeiro e os demais caracteres de cada string no endereço...
|
||||||
|
i = 0;
|
||||||
|
while (coisas[i] != NULL) {
|
||||||
|
printf("coisas[%d] => %c:%s\n", i, coisas[i][0], coisas[i]+1);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putchar('\n');
|
||||||
|
|
||||||
|
// Passando o endereço de str para uma função...
|
||||||
|
print_list(str);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void print_list(char *list[]) {
|
void print_list(char *list[]) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (list[i] != NULL) {
|
while (list[i] != NULL) {
|
||||||
printf("[%d] => %s\n", i, list[i]);
|
printf("list[%d]: %p => %p: %s\n", i, &list[i], list[i], list[i]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
|
|
||||||
// Vetor de strings terminado com NULL...
|
|
||||||
|
|
||||||
char *str[] = {
|
|
||||||
"banana",
|
|
||||||
"laranja",
|
|
||||||
"abacate",
|
|
||||||
(void *)0 /* NULL */
|
|
||||||
};
|
|
||||||
|
|
||||||
print_list(str);
|
|
||||||
|
|
||||||
// O vetor de argumentos (argv) é um vetor de strings
|
|
||||||
// terminado com um ponteiro nulo (NULL)...
|
|
||||||
|
|
||||||
// print_list(envp);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue