Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2017, 16:46   #1
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию [C++]: Почему функция в этом коде принимает в качестве аргумента указатель на указатель?

Код:
#include <stdio.h>
#include <stdlib.h>
int func(char *str, char **str1)
{
    int found = 0;
    while(*str == ' ') str++;
    while(*str != '\0' && *str != ' ')
    {
        str++;
        found = 1;
    }
    *str1 = str;
    return found;
}
int g(char *str, int num)
{
    char *str1;
    if(*str != '\0')
    {
        if(func(str, &str1))
        {
            num = g (str1, num+1);
        }
        return num;
    }
}
int main()
{
    char *str = "this is question number 5 !!  ";
    char *str1;
    int num;
    num = g(str, 0);
    printf("num = %d\n", num);
    func(str, &str1);
    printf("%d", (int)(str1-str));
    return 0;
}
прошу объясните почему функция func принимает указатель на указатель? (экзамен на носу)
больше знаю, лучше сплю)

Последний раз редактировалось Вадим Мошев; 04.01.2017 в 18:28.
nwhta вне форума Ответить с цитированием
Старый 04.01.2017, 17:12   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Автор так захотел.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.01.2017, 17:40   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

потому что указатель надо поменять
p51x вне форума Ответить с цитированием
Старый 04.01.2017, 18:01   #4
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
потому что указатель надо поменять
это ошибка я так понимаю?
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 04.01.2017, 18:07   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ошибка чего?

Автор хотел, чтобы функция меняла значение самого указателя. То есть переменная str1 в main.

Какая была исходная задача и почему он выбрал именно этот способ сложно сказать по этому коду.

Как вариант можно было возвращать указатель возвращаемым значением функции (return).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.01.2017, 18:09   #6
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ошибка чего?

Автор хотел, чтобы функция меняла значение самого указателя. То есть переменная str1 в main.

Какая была исходная задача и почему он выбрал именно этот способ сложно сказать по этому коду.

Как вариант можно было возвращать указатель возвращаемым значением функции (return).
понятно, спасибо
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив Указатель на указатель fr0st1k123 Общие вопросы C/C++ 3 27.12.2015 18:06
Указатель. TIGERMAX777 Общие вопросы C/C++ 2 14.10.2015 20:19
Передать указатель на указатель в функцию erro Общие вопросы C/C++ 3 29.10.2012 17:59
*указатель = *указатель tiger() Общие вопросы C/C++ 7 10.05.2011 12:49
Указатель this Golovastik Общие вопросы C/C++ 8 16.01.2010 10:30