|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.01.2012, 13:14 | #1 |
Регистрация: 15.08.2009
Сообщений: 3
|
Массивы указателей
Возник вопрос по работе с массивами указателей. В коде ниже часть примера с книги Кернигана и Ритчи (глава 5.10 Аргументы командной строки)
main(int argc, char *argv[]) { int c; while (--argc > 0 && (*++argv)[0] == '-') while (c = *++argv[0]) switch (c) { ............ } Во второй части условия первого цикла проверяется первый элемент каждого аргумента командной строки. По логике работы программы, во втором цикле просматриваются все параметры текущего аргумента после знака -. Но по моему пониманию и правилам приоритетности, выражение *++argv[0] эквивалентно *(++(argv[0])) т.е. argv[0] - указывает на первый элемент в массиве указателей argv; ++(argv[0]) - указатель на следующий после argv[0], это argv[1]; *++argv[0] - значение на которое указывает argv[1] (первый символ второго аргумента командной строки). А это не верно. В чем ошибка моих рассуждений. |
04.01.2012, 14:05 | #2 | |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
Цитата:
делая "[0]" вы уже разыменовываете указатель и получаете указатель на строку, только затем вы делаете инкремент указателя, и ставите указатель с 1-го символа на 2ой. чтобы перейти к следующему параметру надо сделать (++argv) |
|
04.01.2012, 18:36 | #3 |
Регистрация: 15.08.2009
Сообщений: 3
|
|
04.01.2012, 20:08 | #4 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
ну разыменования то делать все равно надо будет.
|
04.01.2012, 23:55 | #5 |
Регистрация: 15.08.2009
Сообщений: 3
|
|
05.01.2012, 07:38 | #6 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
А чтобы "передать функции указатель на второй символ первого аргумента", нужно: Код:
Последний раз редактировалось 8Observer8; 05.01.2012 в 08:30. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двумерные массивы(массивы указателей на массивы) | krytishka99 | Помощь студентам | 1 | 29.12.2011 19:51 |
указатели на массивы и массивы указателей | blacktener | Общие вопросы C/C++ | 16 | 13.06.2011 20:45 |
Массив указателей | nattaella | Компоненты Delphi | 2 | 11.06.2011 16:40 |
массив указателей | RUSt88 | Общие вопросы C/C++ | 12 | 10.01.2010 11:11 |
Использование указателей (*) | Crazy_caramel | Помощь студентам | 0 | 16.12.2009 22:06 |