[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. narsad

    narsad Banned

    Joined:
    30 Jun 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Komyak, gcc-c++-4.6.0-9 компилируется без проблем и работает без system("PAUSE"); правда))
     
  2. SwirlStick

    SwirlStick Banned

    Joined:
    25 May 2011
    Messages:
    9
    Likes Received:
    16
    Reputations:
    20
    Прочитай про массивы char'ов ещё раз
     
  3. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    2narsad:
    Code:
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char str23[] = "Hello World";//<<<<<
    	char *str = &str23[0];//<<<<<
    	printf("%c\n", *str);
    	test(&str);
    	printf("%c\n", *str);
    	system("pause");
    	return 0;
    }
    void test(char **str1 )
    {
    	**str1 = 'd';
    	printf("%c\n", **str1);
    
    }
    
    
    P.S первый пример свой, еще раз посмотри
    ...
     
    #6523 edge911, 3 Jul 2011
    Last edited: 3 Jul 2011
  4. narsad

    narsad Banned

    Joined:
    30 Jun 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    edge911, спасибо, так понял, просто так как *str23, уже является указателем на нулевой элемент, то подумал что если еще и указатель на него, а потом уже это в функцию, то это уже получится указатель на указатель на указатель..) спасибо еще раз:)
     
  5. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Всем привет! Вот решил заранее написать диплом. Тему выбрал "СИСТЕМА ЦИФРОВОЙ ОБРАБОТКИ АУДИОСИГНАЛОВ" (тема интересная и обширная).
    И так, теории хватает (что такое аудиосигнал, задержки, эффекты, фильтрация и т.д.), но в плане кода что то ничего :(
    Кто чем может помочь, кто сталкивался с написанием такого софта? Предпочтительный язык С# или C++, но возможны и другие. Во общем подскажите на чём удобней писать и подтолкните в правильном направлении. Любая критика приветствуется ;)
     
  6. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    2return:
    тема так тема, первая ссылка на готовый диплом (правда Delphi(думаю, что не проблема разобраться)):
    http://www.google.ru/search?q=диплом СИСТЕМА ЦИФРОВОЙ ОБРАБОТКИ АУДИОСИГНАЛОВ
     
  7. Lee_fx

    Lee_fx Elder - Старейшина

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Это жеж в сторону рядов вроде, фурье, вейвлеты, жуткие вещи) Есть неплохая книжка на эту тему, "Тим Кинтцель, Руководство программиста по работе со звуком", когда то нашел там объяснения многих непонятных вещей.
     
  8. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    спс, но это видел уже... делфи учил ещё в школе и как то нету желания возвращаться к нему
     
  9. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
  10. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Может то что тебе нужно :

    http://goo.gl/JZ1Ux
    http://goo.gl/5upPN
    http://goo.gl/1OgA8
     
  11. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Странное поведение указателей

    Здравствуйте.
    Не могу прочитать член класса через метод getProcessName()
    Сам класс.
    PHP:
    class CProcess
    {
    public:
       
    CProcess();   
       const 
    LPTSTR getProcessName() const;
    private:
       
    LPTSTR mProcessName;
    };
    Вот его методы.
    PHP:
    #include "Process\Process.hpp"
    #include <tchar.h>

    CProcess::CProcess()
    {
       
    this->mProcessName 0;
    }

    // getter of process' priority
    const LPTSTR CProcess::getProcessName() const
    {
       return 
    this->mProcessName;
    }

    // set the process' name
    void CProcess::setProcessName(LPTSTR processName)
    {
       
    copyString(processNamethis->mProcessName);
       
    _tprintf(L"%s\n"this->mProcessName);
    }
    Тест код.
    PHP:
    void test()
    {
       
    CProcess proc;
       
    proc.setProcessName(L"System32.exe");
       
    _tprintf(L"String %s\n"proc.getProcessName());
    }
    Он вызывает процедуру copyString()
    PHP:
    void copyString(LPTSTR sourceLPTSTR dest)
    {
       
    // amount of symbols
       
    size_t symbols;   
       
    StringCchLength(sourceSTRSAFE_MAX_CCH, &symbols);
       
    _tprintf(L"Symbols %i\n"symbols);
       if (
    dest != 0)
       {
          
    delete []dest;
          
    dest 0;   
       }
       
    _tprintf(L"Source %s\n"source);
       
    // number of symbols + plus the terminating null!
       
    dest = new TCHAR[symbols*sizeof(TCHAR)+1];   
       
    StringCchCopy(destsymbols+1source);   
       
    _tprintf(L"%s\n"dest);
    }
    Тест код выдает, что по адресу mProcessname ничего нет. В отладчике смотрю, что процедура copyString() работает. В чем трудность, я не понимаю.
     
  12. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    PHP:
    #include <Windows.h>
    #include <tchar.h>
    #include <strsafe.h>
    #include <string>

    class CProcess
    {
    public:
        
    CProcess();   
        const 
    LPTSTR getProcessName() const;
        
    void setProcessName(LPTSTR processName);
    private:
        
    LPTSTR mProcessName;
    }; 

    CProcess::CProcess()
    {
        
    this->mProcessName 0;
    }

    void copyString(LPTSTR sourceLPTSTRdest//вот тут я добавил &
    {
        
    // amount of symbols
        
    size_t symbols;   
        
    StringCchLength(sourceSTRSAFE_MAX_CCH, &symbols);
        if (
    dest != 0)
        {
            
    delete []dest;
            
    dest 0;   
        }
        
    // number of symbols + plus the terminating null!
        
    dest = new TCHAR[symbols*sizeof(TCHAR)+1];   
        
    StringCchCopy(destsymbols+1source);  
    }  

    const 
    LPTSTR CProcess::getProcessName() const
    {
        return 
    this->mProcessName;
    }

    void CProcess::setProcessName(LPTSTR processName)
    {
        
    copyString(processNamethis->mProcessName);


    int main()
    {
        
    CProcess proc;
        
    proc.setProcessName(L"System32.exe");
        
    _tprintf(L"String %s\n"proc.getProcessName());
        return 
    0;


    А теперь вопрос - зачем столько секса с копированием, памятью? На С++ же пишем:

    PHP:
    #include <string>
    #include <iostream>
    class CProcess
    {
    public:
        const 
    std::wstringgetProcessName() const
        {
            return 
    mProcessName;
        }

        
    void setProcessName(const std::wstringprocessName)
        {
            
    mProcessName processName;
        }
    private:
        
    std::wstring mProcessName;
    };

    int main()
    {
        
    CProcess proc;
        
    proc.setProcessName(L"System32.exe");
        
    std::wcout << L"String " << proc.getProcessName() << std::endl;
        return 
    0;
    }
    Сравни количество кода и его сложность.
     
    #6532 GRRRL Power, 7 Jul 2011
    Last edited: 7 Jul 2011
  13. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Спасибо. Я так понимаю, там не получилась цепочка из указателей, и адрес не записывался с объект класса.

    Заточка идет специально под Wn32 API - требует руководство.
     
  14. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Адрес записывался во временную переменную на стеке, которой функция пользовалась. Передав аргумент по ссылке, эту проблему решили.


    Не понимаю, в чем проблема совмещать stl и WinAPI. stl - просто очень удобная обертка над тем же АПИ, а сроки разработки, сложность и объем кода сильно снизятся.
     
  15. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Да, я тоже, но это мне дали на тест. А спорить с тим лидом и менеджером мне не хочется.
     
  16. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    на php есть isset,есть ли наподобие на с++ ?
     
  17. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    А зачем это? В php, скрипт может получить пользовательские переменные. Требуется проверить их существование, перед работой с ними (действительно ли пользователь передал переменную?). А в C++ зачем такая функция, если это компилируемый язык и в нем переменные задает сам программист?
     
  18. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    В C++ вообще не бывает необъявленных переменных, соответственно, никакого isset тоже нет.
     
    #6538 GRRRL Power, 8 Jul 2011
    Last edited: 8 Jul 2011
  19. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    eсли тeбe нужно провeрить нe пустa ли пeрeмeннaя(a eсли онa нe пустa - знaчит устaновлeнa) - для тaких типов кaк стринг и вeктор и пр. eсть мeтод empty(). провeряй нa !eмпри и будeт тeбe иссeт.

    Упд:или я нe вeрно понимaю eго нaзнaчeниe?
     
    #6539 Ins3t, 8 Jul 2011
    Last edited: 8 Jul 2011
  20. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Ему наверное проверка на NULL нужна :D
     
Thread Status:
Not open for further replies.