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

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

11.09.2012, 21:01. Показов 3296. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2012, 21:01
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru