В приведенном ниже примере strchr
приведен пример данного примера.Вычитание массива char из указателя char создает int?
/* strchr example */
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "This is a sample string";
char * pch;
printf ("Looking for the 's' character in \"%s\"...\n",str);
pch=strchr(str,'s');
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,'s');
}
return 0;
}
Почему вычитание char
массива str
из char
указателя pch
плюс один дать int
? (как обозначается форматом %d
) Если я удалю «-str
», программа не будет выполняться до тех пор, пока я не изменю %d
на %s
.
Массивы распада на указатели при использовании в выражении и разности указателей - это расстояние (количество элементов) между ними. – zch
@zch: Хорошо, что вы очистили путаницу OPs от семантики массива. Но как же его вопрос? – Deduplicator