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