Почему проверка, если (*argv == ПУСТОЙ УКАЗАТЕЛЬ)? [дубликат]

11
задан SamB 11 February 2012 в 21:31
поделиться

4 ответа

argc предоставит вам количество переданных аргументов командной строки. Вам не нужно проверять содержимое argv , чтобы убедиться, что аргументов недостаточно.

if (argc <= 1) { // The first arg will be the executable name
   // print usage
}
10
ответ дан 3 December 2019 в 03:04
поделиться

Помня, насколько портативен C, он не всегда может работать на стандартной платформе, такой как Windows или Unix. Возможно, это какой-то микро-код внутри стиральной машины, работающей на дешевой, взломанной среде. Таким образом, рекомендуется убедиться, что указатель не имеет значения NULL, прежде чем отменить его передачу, что могло бы привести к вопросу.

Тем не менее, вы правы. * argv совпадает с argv [0], и argv считается инициализированным средой, если он предоставлен.

-121--2910254-

Если столбцы одинаковы во всех трех таблицах, но для включения дубликатов может потребоваться использовать UNION ALL.

-121--3853607-

3,6,1/2:

Если argc ненулевое значение , эти аргументы должно быть предусмотрено в argv [0], хотя ... и argv [0] должен быть указателем к начальному характеру NTMBS , представляющее имя, используемое для вызовите программу или "". Значение argc является неотрицательным. Значение argv [argc] 0.

Акцент мой. argc является только гарантированным неотрицательным, а не ненулевым.

Это при входе в магистраль. Также возможно, что //do stuff изменяет значение argv или содержимое массива, на который он указывает. Для кода обработки опций не совсем неслыханно сдвигать значения от argv при их обработке. Поэтому тест для * argv = = null может проверять, остались ли какие-либо аргументы командной строки после удаления или пропуска параметров. Вы должны посмотреть на остальную часть кода.

11
ответ дан 3 December 2019 в 03:04
поделиться

Насколько я знаю, нет, но вы можете использовать событие window.onbeforeunload , чтобы предупредить пользователей не уходить, при риске потери данных. Пожалуйста, имейте в виду, что это не работает на Opera.

-121--3594840-

Иногда полезна кнопка с маленьким вопросительным знаком.

Необходимо вернуть этот проект в систему управления версиями, и привязка стала действительной.

-121--3690337-

просто спекуляция.

что, если ваш профессор имеет в виду это??

while(*++argv !=NULL)

    printf("%s\n",*argv);
4
ответ дан 3 December 2019 в 03:04
поделиться

Помня о том, насколько переносимым является язык C, можно сказать, что он не всегда работает на стандартной платформе вроде Windows или Unix. Возможно, это микрокод внутри вашей стиральной машины, работающий на дешевой, взломанной среде. Поэтому хорошей практикой является проверка того, что указатель не является нулевым, прежде чем его разыменовывать, что могло привести к вопросу.

Несмотря на это, вы правы. *argv - это то же самое, что argv[0], и argv должен быть инициализирован окружением, если оно предоставлено.

4
ответ дан 3 December 2019 в 03:04
поделиться