C string array and pointers

Няколко примера, които описват почти едно и също нещо – обхождане на елементи на масив с пойнтери. Много важно е да се схване, че масивите от стрингове всъщност представляват масиви от пойнтери от тип char!!!!
Костваше ми много време, докато се убедя, че е така, но не всеки може лесно да свикне да мисли на C :).
Пример 1

#include <stdio.h>
int main(){
 char words[][18] = {"edno", "dve", "tri", "chetiri", "pet"};
 int i;
 
 for (i = 0; i < 5; i++){
     char *words_ptr = *(words + i);
     printf("words_ptr + %d = %s \n", i, words_ptr);
 }
 return 0;
}

Пример 2

#include <stdio.h>
char words[][18] = {"edno", "dve", "tri", "chetiri", "pet"};
char *ptr;
 
int main(){
 int i;
 
 for (i = 0; i < 5; i++) {
     printf("--%s--\n",words + i);
     ptr = *(words + i);
     printf("ptr + %d = %s \n", i, ptr);
 }
 return 0;
}

Пример 3

#include <stdio.h>
char *words[] = {"edno", "dve", "tri", "chetiri", "pet"};
 
int main(){
 int i;
 
 for (i = 0; i < 5; i++) {
     printf("ptr + %d = %s \n", i, *(words + i));
 }
 return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

*