Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
scofielcl
4 / 4 / 3
Регистрация: 11.09.2011
Сообщений: 145
1

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

11.09.2012, 21:01. Просмотров 2286. Ответов 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.
    */
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 21:01
Ответы с готовыми решениями:

Возврат значения функции
Что такое возврат значения функции? я уже всю голову изломал, что и куда...

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

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

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

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

10
Leomana
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
11.09.2012, 21:18 2
1. Если вы передаете указатель в функцию, и меняете переменную, которая приняла значение того указателя, то и этот указатель там где была вызвана функция изменится... что в общем-то не хорошо наверное))
2. Если хотите возвращать указатель, то функция пишется так: тип_данных * fun(...)
3. Думая, что же такое "ЛС", так ни к чему и не пришла...
Вы хотите возвращать пустой следующий элемент?
1
scofielcl
4 / 4 / 3
Регистрация: 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; 
    
}
Но я полагаю , код не совсем верен.
0
I.M.
567 / 550 / 47
Регистрация: 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;
}
Чуть опоздал) и, как советовали выше, лучше не менять входной указатель
1
scofielcl
4 / 4 / 3
Регистрация: 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оздание списка
0
Leomana
59 / 59 / 8
Регистрация: 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оздание списка ЗДЕСЬ забыли поменять наверное
0
scofielcl
4 / 4 / 3
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:35  [ТС] 7
Цитата Сообщение от I.M. Посмотреть сообщение
Если вам нужно вернуть указатель на последний элемент, то функцию надо объявить так
C++
1
list* create(list *p,int n)//тут надо звездочку после типа поставить
Чуть опоздал) и, как советовали выше, лучше не менять входной указатель
Лучше не менять , на основании чего , какие последствия. ?
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
11.09.2012, 21:38 8
Это же объявление функции. Раз сама функция возвращает указатель, то и в ее объявлении это должно быть отражено.
some_type* function() - вернет указатель на объект типа some_type
some_type function() - вернет сам объект типа some_type
т.е. разница есть
1
scofielcl
4 / 4 / 3
Регистрация: 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оздание списка
Так корректно с точки зрения компилятора.
0
I.M.
567 / 550 / 47
Регистрация: 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);
0
scofielcl
4 / 4 / 3
Регистрация: 11.09.2011
Сообщений: 145
11.09.2012, 21:43  [ТС] 11
Совершенно верно.
0
11.09.2012, 21:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 21:43

Двумерные массивы и возврат значения из функции
Доброго времени суток уважаемые фуромчане! Решил обратиться к более опытным...

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

Возврат значения С++
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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