#include 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[]) { int i = 0; while (list[i] != NULL) { printf("list[%d]: %p => %p: %s\n", i, &list[i], list[i], list[i]); i++; } }