Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
#1

Возврат значения из функции - C++

11.09.2012, 21:01. Просмотров 1887. Ответов 10
Метки нет (Все метки)

Добрый вечер.

Вопрос следующий , как возвратить из функции create последнее значение ЛС , чтоб в дальнейшем использовать в main.
newfile.h
C++
1
2
3
4
5
6
7
8
struct list {
    int inf;
    list *first;
    list *next;
    list *end;
};
 
list create(list *p,int n); //cоздание списка
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "newfile.h"
 
list first;
list end;
 
int main() {
    srand(time(NULL));
    int n , namber ,i; // n число элементов i бегунок 
    cout<<"Число элементов :"<<endl;
    cin>>n;
    
 
    list *first = new list;
    list *p= first;
    p->inf = rand()%10; // первый элемент
 
   end = create(p,n);//функция создания ЛС
newfile.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
list create(list *p,int n){
    int i;
        for(i=1;i<n;i++){
        p->next = new list;
        p= p->next;
        p->inf = rand()%10;
        
    }
   /*     if(i=n-1){
        list *end = new list;
        list *p = end;
        }
    return p; // т.е ссылку на последний эл-т  я хотел бы возвратить в main , и просвоить end.
    */
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 21:01     Возврат значения из функции
Посмотрите здесь:

Возврат значения функции - C++
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в...

Неправильный возврат значения функции - C++
При компиляции если значение меньше или равно 100 программа прекращает работу а если значение выше 100 то работает нормально. ...

Возврат копии значения из функции - C++
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект, например #include &lt;iostream&gt; int foo() { int...

Возврат значения из полиморфной функции - C++
Доброго времени суток всем. Ребят не знаю как правильно сформулировать свой вопрос. Суть вот в чем: В базовом классе Cell определена...

Возврат значения через параметр функции - C++
Пишу функцию,которая должна создавать динамическую матрицу,а затем возвращать ее через параметр. Правильно ли я понимаю,что для этого надо...

Двумерные массивы и возврат значения из функции - C++
Доброго времени суток уважаемые фуромчане! Решил обратиться к более опытным людям ибо сам допереть не могу:) Ситуация вот в чём.Нужно...

Повторный возврат рандомного значения ,без изменения значения - C++
Добрый день. Пишу простую консольную игру Кости. Есть 4-е функции прорисовки костей (2-е на кости игрока и 2-е на кости ПК). Каждая...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
11.09.2012, 21:18     Возврат значения из функции #2
1. Если вы передаете указатель в функцию, и меняете переменную, которая приняла значение того указателя, то и этот указатель там где была вызвана функция изменится... что в общем-то не хорошо наверное))
2. Если хотите возвращать указатель, то функция пишется так: тип_данных * fun(...)
3. Думая, что же такое "ЛС", так ни к чему и не пришла...
Вы хотите возвращать пустой следующий элемент?
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:23  [ТС]     Возврат значения из функции #3
ЛС - линейный список.
В функцию я передаю адрес первого элемента , после мне нужен адрес последнего эл-та , чтобы продолжить данный список в другой функции.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
list * create(list *p,int n){
    int i;
        for(i=1;i<n;i++){
        p->next = new list;
        p= p->next;
        p->inf = rand()%10;
        
    }
 
    return p; 
    
}
Но я полагаю , код не совсем верен.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.09.2012, 21:25     Возврат значения из функции #4
Если вам нужно вернуть указатель на последний элемент, то функцию надо объявить так
C++
1
list* create(list *p,int n)//тут надо звездочку после типа поставить
полностью функция выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
list* create(list *p,int n)
{
    int i;
        for(i=1;i<n;i++){
        p->next = new list;
        p= p->next;
        p->inf = rand()%10;
        
    }
   return p;
}
Чуть опоздал) и, как советовали выше, лучше не менять входной указатель
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:30  [ТС]     Возврат значения из функции #5
newfile.cpp:11: error: new declaration ‘list* create(list*, int)’
newfile.h:21: error: ambiguates old declaration ‘list create(list*, int)’

11 строка : list* create(list *p,int n){
21 строка : list create(list *p,int n); //cоздание списка
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
11.09.2012, 21:32     Возврат значения из функции #6
C++
1
2
3
4
5
6
7
8
struct list {
    int inf;
    list *first;
    list *next;
    list *end;
};
 
list create(list *p,int n); //cоздание списка ЗДЕСЬ забыли поменять наверное
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:35  [ТС]     Возврат значения из функции #7
Цитата Сообщение от I.M. Посмотреть сообщение
Если вам нужно вернуть указатель на последний элемент, то функцию надо объявить так
C++
1
list* create(list *p,int n)//тут надо звездочку после типа поставить
Чуть опоздал) и, как советовали выше, лучше не менять входной указатель
Лучше не менять , на основании чего , какие последствия. ?
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.09.2012, 21:38     Возврат значения из функции #8
Это же объявление функции. Раз сама функция возвращает указатель, то и в ее объявлении это должно быть отражено.
some_type* function() - вернет указатель на объект типа some_type
some_type function() - вернет сам объект типа some_type
т.е. разница есть
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:38  [ТС]     Возврат значения из функции #9
main.cpp
C++
1
 list *end = create(p,n);
newfile.h
C++
1
list * create(list *p,int n); //cоздание списка
Так корректно с точки зрения компилятора.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.09.2012, 21:42     Возврат значения из функции #10
Эм, это вопрос?) В итоге все будет выглядеть как-то так:
C++
1
2
3
4
5
6
//newfile.cpp
//...
list * create(list *p,int n)
{
//тело функции
}
C++
1
2
3
//newfile.h
//...
list * create(list *p,int n);
C++
1
2
3
//main.cpp
//...
list* end = create(p, n);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 21:43     Возврат значения из функции
Еще ссылки по теме:

Возврат значения С++ - C++
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру данных, с которой можно работать через перегруженные...

Возврат значения по ссылке - C++
Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку?

Возврат значения из operator= - C++
Товарищи идет ли разрушение пир такой вот штуке, вызывается ли тут деструктор? Тексты надо переписывать в сообщение!

Тернарный оператор: возврат значения - C++
Приветствую. При компиляции ниже приведенного кода bool MyFunc() { bool flag = false; // .... некоторые действия // .......

Возврат значения нажатой клавиши - C++
Подскажите ассемблеровскую вставку для С++. Чтобы возвращалось значение нажатой клавиши


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:43  [ТС]     Возврат значения из функции #11
Совершенно верно.
Yandex
Объявления
11.09.2012, 21:43     Возврат значения из функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru