Как проверить, существует ли позиция массива? - PullRequest
2 голосов
/ 24 апреля 2011
char X[3];

как проверить, существует ли массив X[position]? например:

if (x[4] == True)
    printf("Exists")
else 
   printf("NONE")

Ответы [ 4 ]

6 голосов
/ 24 апреля 2011

Каждая позиция в массиве C в границах массива всегда существует, поэтому нет необходимости проверять наличие случайной позиции на наличие. Все, что вам нужно сделать, это убедиться, что индекс находится внутри границ.

Если массив объявлен со статическим размером, вы можете получить длину массива через sizeof:

int array[30];
int length = sizeof(array) / sizeof(int);
// sizeof(array) returns the size in bytes, divide by element size to get element count

Однако, если массив не имеет известной длины во время компиляции, вам придется найти его другим способом. Функции C, работающие с массивами, обычно принимают и указатель на первый элемент, и размер как отдельные аргументы.

void do_something_to(int *items, int item_count);

Вы должны быть особенно осторожны при передаче массивов функциям, так как массив, переданный функции, становится «простым указателем», и компилятор теряет всю дорожку своего размера (sizeof сообщит о размере указателя). ИМХО, это наименее сбивает с толку, чтобы вообще избегать аргументов массива и просто придерживаться указателей.

1 голос
/ 24 апреля 2011

Вы не можете.

Вам просто нужно помнить (возможно, передавая int), что массив имеет длину 3.

0 голосов
/ 24 апреля 2011

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

Функции C, работающие с массивами, обычно имеют параметр int size, который используется для указания размера массива, поэтому вызываемая функциязнает, с какими элементами он имеет дело.

0 голосов
/ 24 апреля 2011

Если объявление массива видно, вы можете использовать «sizeof» и разделить на размер типа данных. В противном случае вам не повезло.

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