Модераторы: JackYF, bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выделить память через new под объект char*[] ? 
V
    Опции темы
neosapient
Дата 22.7.2019, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 670
Регистрация: 16.8.2006

Репутация: нет
Всего: 4



Здравствуйте.

Посмотрите на второй параметр для функции main:

int main(int argc, char *argv[])
{
    return -1;
}

Как мне создать соответствующий объект? Как через оператор new выделить память? 
И как потом записать его в качестве возвращаемого параметра.


Глобальная задача - создать класс Arg и инициализировать его. A затем через метод Arg::Argv() возвращать указатель на буфер, аналогичный второму параметру из main(). Набросок кода:
Код

class Arg
{
    int m_argc;
    char* m_argv[];

    Arg(int argc, char *argv[])
      : m_argc(argc)
    {
      m_argv = new (char[]);  // <--- тут надо правильно записать выделение памяти
      for(int i =0; i<argc; i++;){
        int len = strlen(argv);
        m_argv[i] = new char[len +1];
        strncpy(m_argv[i], argv[i], len);
        m_argv[i][len]='\0';
      }
    }

    int Argc()
    { return m_argc; }

    char *[] Argv()  // <--- тут надо правильно записать возврат указателя, 
    { return m_argv; }  //  <--- аналогичный второму параметру main()
};

Спасибо.
PM MAIL   Вверх
Romikgy
Дата 23.7.2019, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7278
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 144



Цитата(neosapient @  22.7.2019,  21:52 Найти цитируемый пост)
m_argv = new (char[]);  // <--- тут надо правильно записать выделение памяти

Код

m_argv = new (char*)[argc];

Цитата(neosapient @  22.7.2019,  21:52 Найти цитируемый пост)
  char *[] Argv()  // <--- тут надо правильно записать возврат указателя, 

Код

char ** Argv() 


Это сообщение отредактировал(а) Romikgy - 23.7.2019, 09:49


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 23.7.2019, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 670
Регистрация: 16.8.2006

Репутация: нет
Всего: 4



Romikgy, спасибо, получилось.

Код

class Arg
{
    int m_argc;
    char** m_argv;
public:
    Arg(int argc, char *argv[])
        : m_argc(argc)
    {
        typedef char*  pchar;
        m_argv = new pchar[argc];  // <--- тут надо правильно записать выделение памяти
        for(int i =0; i<argc; i++){
            int len = strlen(argv[i]);
            m_argv[i] = new char[len +1];
            strncpy(m_argv[i], argv[i], len);
            m_argv[i][len]='\0';
        }
    }

    int Argc()
    { return m_argc; }

    char ** Argv()  // <--- тут надо правильно записать возврат указателя, 
    { return m_argv; }  //  <--- аналогичный второму параметру main()
};


void show(int argc, char* argv[])
{
    for(int i =0; i<argc; i++){
        printf("%s\n", argv[i]);
    }
}

int main(int argc, char* argv[])
{
    Arg arg(argc, argv);
    show(arg.Argc(), arg.Argv());
    return 0;
}

PM MAIL   Вверх
Google
  Дата 14.10.2019, 06:16 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.