C: Убедитесь, что элемент, который вы возвращаете из массива, правильный - PullRequest
1 голос
/ 03 августа 2009

Скажем, у нас есть этот код C:

int x[] = {1, 2, 3, 4, 5};

printf("%d", *(x + 1)); //prints 2
printf("%d", *(x + 500)); //prints 7209065 (...?)

Как вы можете видеть из второго вызова, он по-прежнему что-то возвращает ... но это мусор.

Поэтому я спрашиваю, как вы справляетесь с таким случаем в Си? то есть как вы узнаете, является ли возвращаемый элемент действительно элементом, который существует в массиве, или просто мусором?

Ответы [ 11 ]

0 голосов
/ 03 августа 2009

Практически, либо массив с 0-концом, где у вас есть 0 в конце массива и вы ограничиваете его последовательный обход, либо вы передаете переменную, содержащую длину массива, вместе с массивом и проверяете это перед всем вашим массивом доступ.

Массив в C сам по себе не знает, как долго он находится, и поэтому вы не можете получить какое-либо поведение, которое полагается на это бесплатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...