Здравствуйте. Вы конечно будете ругаться, но пожалуйста ответте... Например, есть такой кусочек кода ------------ /*...*/ unsigned short int * pBuf; *pBuf++; /*...*/ ------------ не подскажете случаем к чему именно применяется оператор ++??? В смысле что мы здесь увеличиваем, сам адрес на который ссылается указатель, или же то на что он ссылается??? Короче говоря, будет запись *pBuf++ эквивалентна записи *(pBuf++) или же записи (*pBuf)++??? Благодарю за внимание... спасибо.
Добрый день, ToBeOrNot! В случаях, когда сомневаешься - используй явно скобки(когда не сомневаешься, для подобных случаев, также используй, т.к. могут сомневаться компиляторы). Удачи
Ответ отправлен: 09.04.2003, 18:11 Отправитель: Yuri Gordienko Отвечает Ramzes
Приветствую Вас, ToBeOrNot! Имеем 3 варианта: 1. int a = *pBuf++; 2. int a = *(pBuf++); 3. int a = (*pBuf)++; 1. Переменной а присваивается содержимое памяти, на которую указывает pBuf, т.к приоритет операции * больше приоритета ++, и после этого значени УКАЗАТЕЛЯ увеличивается на 1, то есть + 2 байта. 2. то же, что и в предыдущем случае. 3.Переменной а присваивается содержимое памяти, на которую указывает pBuf, и потом содержимое памяти, на которую указывает пБуф увеличивается на 1; Ответ отправлен: 09.04.2003, 13:32 Отправитель: Ramzes Отвечает Morgion
Добрый день, ToBeOrNot! А самому проверить слабо? На самом деле всё просто- операция ++ имеет больший приоритет, чем *, поэтому *pBuff++ это тоже самое, что и *(pBuff++). Ответ отправлен: 09.04.2003, 20:15 Отправитель: Morgion Отвечает Dzik
Доброе время суток, ToBeOrNot! Эта запись эквивалентна *(pBuf++) Ответ отправлен: 09.04.2003, 07:02 Отправитель: Dzik Отвечает Avl2k
Доброе время суток, ToBeOrNot! Поскольку оператор ++ имеет более высокий приоритет, чем оператор *, то запись эквивалентна *(pBuf++), что фактически значит: 1. t = pBuf; 2. pBuf = pBuf + 1 3. *t С уважением, Avl2k. Ответ отправлен: 09.04.2003, 10:17 Отправитель: Avl2k Отвечает PL
Доброе время суток, ToBeOrNot! Конечно же увеличивается адресс хранящийся в указателе, а за тем он разыменовывается и возвращает значение по этому адресу. Вот примерчик int *p, a[5] = { 1,2,3,4,5}; p = &a[2]; cout<<*p<*p++; cout<<*p<Сначала выведется 3 а затем 4, а происходит так потому что приоритет операции инкремента выше операции разыменовывания указателя. По этому *р++ = *(р++) Ответ отправлен: 09.04.2003, 06:25 Отправитель: PL
Вопрос № 684
Эксперты, нигде не нашел доков или книг по программированию на C(unix) под mysql и под web на тех же любимых сях. Может линки кините, или сразу книги на почту. Только не надо говорить, что под веб лучше С не использовать:)
Доброе время суток, stranger! Доки по mysql лежат на сайте www.mysql.com. Там же лежат API для C и C++, а также примеры их использования. IMHO удобнее использовать API для C++ (он же MySQL++), хотя он и несколько сложнее. По поводу программирования веб на C никакого особого API не нужно, необходимо знание соответствующих протоколов (HTTP, FTP и т.д.). Если не хочется все писать ручками, можно найти либы для этих протоколов или взять куски исходников PHP(www.php.net) или Perl(www.perl.com). С уважением, Avl2k. Ответ отправлен: 09.04.2003, 12:00 Отправитель: Avl2k Отвечает Yuri Gordienko
Приветствую Вас, stranger! А что значит "на C(unix) под mysql и под web"? Под тот-же MySql в составе дистрибутива идут библиотеки работы с базой данных, - читаешь документацию по интерфейсу и используешь. Удачи.
Ответ отправлен: 09.04.2003, 18:08 Отправитель: Yuri Gordienko
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.