Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. gh05t

    gh05t New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    34
    _DEN_
    Это я более менее представляю. А переменным то почему значения нужные не присваиваются? Излишняя оптимизация? :)
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    gh05t

    Переменных может и не быть :) Например

    int a = 0;
    std::cout << a;

    В релизе не будет никакой "a" (не будет выделено место на стеке). На консоль сразу отправится ноль.
     
  3. gh05t

    gh05t New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    34
    _DEN_
    Ясно. Спасибо за объяснения :)
     
  4. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    подскажите как сменить описание своего процесса в диспетчере задач?
     
  5. hamper

    hamper Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    37
    Адрес:
    Russia
    Возможно ли в C++ реализовать что-то подобное свойствам в, извините, Delphi :-[
    Т.е. в классе
    Код (Text):
    1. struct c{
    2.    int &f();
    3.    int f() const;
    4. };
    мне хотелось, чтобы первый вариант функции использовался, когда она применяется как LVALUE, а второй вариант - когда используется как RVALUE
    Код (Text):
    1.    c oc;
    2.    oc.f()=1;  //первый вариант
    3.    int x=oc.f();  //второй вариант
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    hamper
    обычно используют пару
    void f(T); T f();

    но также есть например нестантартные вещи типа __property

    а что с
    int &f();
    int f() const;
    не так? вроде должно работать
     
  7. hamper

    hamper Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    37
    Адрес:
    Russia
    GoldFinch
    Работает, но в обоих случаях вызывается первый вариант функции, как и сказано в справочнике Страуструпа, раздел R.13.2 "опоставление параметров". А второй вариант используется для const объекта:
    Код (Text):
    1. x=((const c)oc).f();
    За подсказку насчёт __property спасибо, хоть и хотелось стандартного решения.
     
  8. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    hamper
    Вы в курсе, что такое rvalue и lvalue?
     
  10. hamper

    hamper Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    37
    Адрес:
    Russia
    О чём-то мне эти слова напоминают...
    J0E
    В этом что-то есть...

    Скажу почему меня интересует эта тема.
    Читал Страуструпа, "Язык программирования C++". Есть там такая глава "7.11 Строковый класс" - с подсчётом числа ссылок для минимизирования копирования.
    В классе определена операция индексации
    char& operator[](int i);
    для доступа к символам строки.
    Так вот, в этом примере оператор [] определён так, что читать символ мы можем без проблем, а вот если изменить какой-нибудь символ в строке, то изменятся и все остальные копии этой строки.
    Т.е., когда мы используем оператор [] для модификации символа строки нужно делать реальное копирование содержимого строки.
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    get, set.
     
  13. WhiteP

    WhiteP New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2008
    Сообщения:
    7
    Здравсвуйте.

    Объясните, пожалуйста, "на пальцах" что такое буферизация ввода-вывода. Читаю в книге про io-потоки и никак не могу понять некоторых моментов. Насколько я понял io-буфер - это какая-то промежуточная область в памяти. Вот только в промежутке между чем и зачем вообще оно нужно.

    Я понимаю так (неправильно, наверное): при cin>>x введеное пользователем значение по нажатию на enter помещается в этот самый буфер потока ввода, который является просто областью в памяти, а затем перемещается в память выделенную переменной x?
     
  14. NOD_0x03

    NOD_0x03 New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2009
    Сообщения:
    1
    Добрый день! Я пытаюсь разобрать одну програмку, написанную под DOS, предположительно на Turbo C, и переписать ее на Watcom C. Что-то типа обратной разработки.

    Встретилась мне вот такая процедура:
    Код (Text):
    1. sub proc near
    2.    repe cmpsb
    3.    retn
    4. sub endp
    Суть процедуры сводиться в принципе к стандартной процедуре
    int strncmp ( const char * str1, const char * str2, size_t num );
    Параметры передаются в регистрах
    str1 = DS:SI, str2 = ES:lol: I, num = CX
    А вот результат возвращается во флаге ZF и вызывающая процедура анализирует его.
    Если передачу параметров в регистрах можно описать с помощью #pragma aux, то как описать возврат результата во флаге ZF, я не знаю. Может ли кто-то подсказать?
    Или как по другому можно такое реализовать методами C?

    P.S. впринципе эту процедуру можно сделать inline-овой, но все-таки хотелось бы узнать как такое реализуется.
     
  15. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    WhiteP
    Любой текст, который ты вводишь - помещается в память в массив символов. Это - буфер. Даже если ты вводишь число, каждая введенная циферка записывается в буфер в виде символа, а когда нажмешь Enter - программа переведет строку символов в соответствующее число.
    Буферы занимает определенный объем памяти - можешь открыть Диспетчер Задач или в Linux'е. Найдешь такой пункт "буферы ввода-вывода". Еще есть кэш жестких дисков - это тоже относится к вводу/выводу, рассказывать?
     
  16. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Никак - результат возвращается через eax. Проверяй флаг ZF и если он есть - eax = 1, а если нет - eax = 0.
     
  17. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Пардон, NOD_0x03, ты же для ДОСа пишешь? Значит вместо eax будет ax.
     
  18. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    У меня такой вопрос. Хочу объявить константную структуру и хочу это сделать как-то так:

    Код (Text):
    1. struct TYPE {
    2.   file = 10;
    3.   aug = 23;
    4.   path[] = "Andrey";
    5. } s;
    Но не выходит. Единственный работающий вариант:
    Код (Text):
    1. struct TYPE s = {10,23,"Andrey"};
    При этом хотелось бы видеть имена переменных перед значениями. Как можно сделать?
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    >Хочу объявить константную структуру и хочу это сделать как-то так:
    static const?
    >При этом хотелось бы видеть имена переменных перед значениями.
    Что?
     
  20. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Говорит "слишком много ключевых слов".
    Чтобы была структура с полями, эти поля были доступны (н-р, s.path), но только для чтения.