Итак, я начинаю с программированием и пониманием указателей C и как их использовать, все еще вызывает у меня проблемы. Здесь я просто пытаюсь выполнить итерацию по массиву с помощью указателя. У меня есть этот бит кода ниже, но вместо того, чтобы заканчиваться на 55, он печатает дополнительное значение (32765). Во-первых, может кто-нибудь объяснить мне, почему я получаю дополнительную ценность? Во-вторых, может ли кто-нибудь сказать мне, как ограничить эту программу значениями в массиве? Я попытался использовать * pntr < 5 для состояния, но затем ничего не печатает.Итерация через массив w/pointer
void iterate(int* li) {
for (int *pntr = li; *pntr; pntr++) {
printf("%d\n", *pntr);
}
}
int main(){
int values[] = {11, 22, 33, 44, 55};
iterate(values);
}
Подумайте о том, что '* pntr' делает один раз' pntr' больше не указывает ни на одно из ваших значений. –
Потому что вы вызываете неопределенное поведение. Нет необходимости, чтобы массив 'int' был завершен с нулевой точкой, поэтому ваше условие завершения цикла' for' не должно выполняться. –