Няколко примера, които описват почти едно и също нещо – обхождане на елементи на масив с пойнтери. Много важно е да се схване, че масивите от стрингове всъщност представляват масиви от пойнтери от тип 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; } |