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

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

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Админам: Думаю, стоит выделить.
    -----------------------
    Теперь по теме.
    Есть проблема с указателями.

    Вот:

    Код (Text):
    1.    
    2.              int x,y,i;
    3.     cin >> x;
    4.     cin >> y;
    5.     int **p1 = new int *[x];
    6.              int **p2 = new int *[y];
    7.  
    8.     for (i=0;i<x;i++)
    9.     {
    10.         p1[i]=0;
    11.     };
    12.  
    13.     return 0;
    Пытаюсь сваять динамический массив (двухмерный)...
    Ну объясните мне, что делает этот код... по строчкам, начиная с 4й. Желательно, обяснять как идиоту, посколку я совсем запутался....
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Этот код считывает с клавиатуры X и Y и потом строит динамически два массива указателей вида int* под именами p1 и p2 и с числом указателей в каждом X и Y соответственно. Далее элементы первого массива инициализируются нулями.

    Динамический массив в С++ создается так:
    Код (Text):
    1. ТИП* имя = new ТИП[РАЗМЕР];
    В данном случае ТИП = int* и объявление выглядит так:
    Код (Text):
    1. int** p1 = new int*[x];
     
  3. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Изучаю С++ около полугода. Думаю прогу написать чтоб с другом можно было по модему общаться. Только не знаю с чего начать - нету у меня учебника по API и всё тут, тупик. Но как известно как известно Российские програмисты - лучшие програмисты в мире и не намерен я срамить это звание.
    И так перед тем как я задам какой либо вопрос надо условиться что.
    1. Моих знаний может быть не достаточно для понимания какого либо ответа, так что не обессуйте если переспрошу.
    2. Я скорее всего задам много глупых вопросов, так что наберитесь терпения. Обещаю что после ответа я исправлюсь!
    И ещё - если есть какой либо ресурс посвещённый данной теме/вопросу, не поленитесь, дайте ссылку.
    Вопросы:
    1. точка входа в консольно приложение использующие API, есть main()?
    2. как выглядит минимально законченное прилоение использующие API, в примере программы Hello Word?
    3. можно ли совмещать такаие конструкци как (Чисто теоритической пример): с помощью API посмотрел сколько в системе жёских дисках и вывел это через cout, без написания класса вывода этих самых данных? Как это можно сделать, если пример не слишком громоздок или мой вопрос неверено задан?
    4. есть ли русско язычные переводы справк по API, MSND. Если нет, можно ли найти словарные базы, для извесных переводчиков знающих специфику перевода технической документации?

    На пока всё, но непременно у меня появяться новые вопросы.
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    1. да
    2.
    Код (Text):
    1. //думаю, этого хватит
    2. //0 - открыть сидюк
    3. //1 - закрыть сидюк
    4. #include "windows.h"
    5. #include "mmsystem.h"
    6. #include "stdio.h"
    7. #include "conio.h"
    8.  
    9. void main()
    10. {
    11.  char t;
    12.  do
    13.  {
    14.   t=getch();
    15.   switch(t)
    16.   {
    17.    case '0':mciSendString("set cdaudio door open",NULL,NULL,NULL);break;
    18.    case '1':mciSendString("set cdaudio door closed",NULL,NULL,NULL);break;
    19.   }
    20.  }
    21.  while (t!=27);
    22. }
    3. не понял вопроса
    4. есть русскоязычные
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    можно.
    Код (Text):
    1. #include <iostream>
    2. #include <windows.h>
    3. using namespace std;
    и будет тебе счастье
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Зависит от того, используешь ты crt или нет. Можно написать консольное приложение без использования crt и тогда точка входа будет WinMain.
    Ответ зависит от использования crt.
     
  7. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Хватит. Только у меня IDE собирать не хочет:
    строка 14 error C2664: 'mciSendStringW' : cannot convert parameter 1 from 'const char [24]' to 'LPCWSTR'
    строка 15 error C2664: 'mciSendStringW' : cannot convert parameter 1 from 'const char [22]' to 'LPCWSTR'
    Думаетья мне это от того что среда у меня слишком уж новая. Это я от того что в исходниках небыло обявленно исполбзования стандартного пространсва имён и компилятор выдал это злобный c - style.

    Great
    Что есть crt?

    RamMerLabs
    Можно ссылочку?

    Ещё вопрос.
    1 Есть ли способ узнать какие *.h включать при использовании какой либо API функции?
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    С Runtime, в данном случае я расширяю это на C++ и включаю сюда условно всякие cin, cout, *stream, string и прочие
     
  9. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Отключи использование UNICODE в проекте.

    подкючай windows.h - не ошибешься

    пожайлуста: http://google.ru
    ЗЫ: эта ссылка поможет почти всегда!
    ЗЗЫ: т.к. это сверхсекретный поисковик, никому не сообщай эту ссылку :)))))
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    достаточно написать перед первой строчкой #undef UNICODE
     
  11. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Не скажу, так и знай! Только вот думаю FBI уже докапались до него... Недано видел там обявление об похищении Летающей Тарелки и цену за голову агента Малдера... (с) Green People.

    RamMerLabs & Great
    Не помогает.
    строка 13 warning C4996: 'getch' was declared deprecated

    Думаю надо сказать что у меня 2005 Visual C++ от мелких.
     
  12. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Тогда замени:
    Код (Text):
    1. case '0':mciSendString("set cdaudio door open",NULL,NULL,NULL);break;
    2. case '1':mciSendString("set cdaudio door closed",NULL,NULL,NULL);break;
    на
    Код (Text):
    1. case '0':mciSendString(LPCWSTR ("set cdaudio door open"),NULL,NULL,NULL);break;
    2. case '1':mciSendString(LPCWSTR ("set cdaudio door closed"),NULL,NULL,NULL);break;
    Несложно догадаться: VS6 сама не включает UNICODE для проектов.
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Товарищи! Ну нельзя же так. На рсдн куча материала по С++.

    Либо убираешь UNICODE из директив препроцессора для сборки ANSI-версии, либо обрамляешь строки L"" для UNICODE-версии, либо (лучше всего) всегда пишешь _T("").
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Это и так ясно, что 2005. вместо getch пиши _getch
     
  15. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Таблица полученная эксперементальным путём.

    1. LPCWSTR (ошибка) не конвертируться при использовании ANSII, в LPCSTR
    2. LPCSTR (ошибка) не конвертируеться при использовании UNICODE, в LPCWSTR
    Вообщем судя по этим данным, можно плясать как от ANSII так и от UNICODE исправляя всего один байт. Что в свою очередь значит, что не в этом дело... (На точность не претендую!) Что за зверь у меня вышел при юзании всего вот этого ниже.

    При написании _getch вместо getch, исчез жуткий c - style!

    Небольшое подитоживание:
    1. Имееться программа которая горит собраться в ANSII

    #include "windows.h"
    #include "mmsystem.h"
    #include "stdio.h"
    #include "conio.h"

    void main()
    {
    char t;
    do
    {
    t=_getch();
    switch(t)
    {
    case '0':mciSendString(LPCSTR("set cdaudio door open"),NULL,NULL,NULL);break;
    case '1':mciSendString(LPCSTR("set cdaudio door closed"),NULL,NULL,NULL);break;
    }
    }
    while (t!=27);
    }

    2. Имееться ошибка - fatal error LNK1120: 1 unresolved externals. :dntknw: Чё это опять такое вылезло-о-о...

    Э... При установке 2k + 5, она мне написала что она восьмая студия. Это мания величия у мелких заиграла?
     
  16. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    а либу ты линкеру подключил? (winmm.lib в опциях линкера)
     
  17. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Ещё и такое можно!
    И так. Я в: НазваниеПроекта - PropertyPages/Configuration Properities/Linker куда дальше?
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Тема выделена. Удачи.
     
  19. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Ребят, вопрос детский, подскажите:

    в коде использую RtlInitUnicodeString, на этапе компиляции все ОК, начинаю строить и получаю: unresolved external symbol _RtlInitUnicodeString... (((

    В чем м.б. дело? Сильно не пинайте, только учусь. Только-только.
     
  20. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    IceFire
    Дай два учатска кода.
    1. Тот где ты инициализируешь АПИ
    2. Тот где ты используешь эту АПИ

    помогу