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

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

Войти
Регистрация
Восстановить пароль
 
 
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
#1

Функции и указатели - C++

08.05.2013, 21:55. Просмотров 717. Ответов 22
Метки нет (Все метки)

Здравствуйте Господа !!!
Вопрос банальный и честно говоря даже стыдно его тут задавать , но не могу уже минут 40 понять почему не получается . Итак допустим имеем функцию которая возвращает двух мерный массив -
C++
1
2
3
4
5
6
7
8
int Mas(){
    
 int n[5][2]={5,1,9,7,2,
                8,3,6,4,9};
                
       return **n;   
    
}
и в основной программе есть указатель на эту функцию , на сколько я предполагал по первому (нулевому) эллементу массива можно раскалупать и весь массив , НО у меня получается так , что первый элемент выводится нормально , а вот остальные какие то левые значения (первоначально была мысль сделать 2-х мерный массив и присвоить ему значения из Mas() , но это тоже не сработало), вот весь код программы -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <cstdlib>
#include <iostream>
 
int Mas(){
    
 int n[5][2]={5,1,9,7,2,
                8,3,6,4,9};
                
       return **n;   
    
}
 
int main(int argc, char *argv[])
{
    
 
 
    int *u ;
    
    u = new int [10];
    
    *u=Mas();
    
    for(int a=0;a<10;a++){
 
           std :: cout<<u<<" = "<<*u<<"\n";
            
            *u++;
            
            }
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 21:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции и указатели (C++):

Указатели на массивы. Указатели и функции - C++
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать: -Элементы обоих массивов; -Общие...

Указатели и массивы. Указатели и функции - C++
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию Compress() с использованием указателей, которая...

Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции - C++
Распечатать таблицы значений функций cox (x) и на отрезке с шагом h, развив функции в ряд Тейлора и используя указатели на функции.

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Шаблонные функции и указатели на функции - C++
Помогите доделать и исправить... Задание: 1. Создать структуру Прямоугольник, с полями Высота и Ширина. Создать массив объектов типа...

Указатели на функции - C++
Подскажите должен ли работать этот код(самый первый). И как он работает

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.05.2013, 22:25  [ТС] #16
вообщем наверное будет проще сделать массив и передавать в функцию и там его заполнять !!!
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6471 / 3119 / 306
Регистрация: 04.12.2011
Сообщений: 8,594
Записей в блоге: 4
08.05.2013, 22:25 #17
Цитата Сообщение от Игорь с++ Посмотреть сообщение
это понятно , а вот что бы сохранить ту первоначальную мысль , как то можно ?
Я тоже не понял. Вот фантазия на тему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define num 3
#include <iostream>
using namespace std;
int* retMass(){
static int a[]={1,2,3};
return a;
}
int main(){
int* (*ptr_toFn)()=retMass;//это вкупе с int не значило бы int*
int *b=ptr_toFn();//аналогично следующей строке
//int *b=retMass();
for(int i=0; i<num; ++i)cout<<b[i]<<" ";
cout<<endl;
system("pause");
}
1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
08.05.2013, 22:26 #18
Цитата Сообщение от Игорь с++ Посмотреть сообщение
но не понятна ваша фраза -
потому что массив создается на стеке при входе в функцию, а после выхода из функции та часть стека, которую занимал массив, считается свободной и затирается другими значениями. Поэтому я вызываю функцию 10 раз, чтоб создалось 10 таких массивов и возвращаю указатель на последний из созданных массивов. Таким образом есть шанс, что этот массив все же не затрется при вызове того же std::cout << (), но никто этого не гарантирует.
1
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.05.2013, 22:40  [ТС] #19
Kastaneda, Спасибо огромное , теперь всё понятно .

Добавлено через 8 минут
вот так наверное более правельно и красиво будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <cstdlib>
#include <iostream>
 
 using namespace std;
 
void Mas(int s[10][10]){
 
  for (int a=0;a<10;a++){
      for(int b=0;b<10;b++){
              
              s[a][b]=b;
              
              }}
                  
    
}
 
int main(int argc, char *argv[])
{
    
    int m[10][10];
    
 Mas(m);
 
 for (int a=0;a<10;a++){
      for(int b=0;b<10;b++){
              
              cout<<m[a][b];
              
              }
              
              cout<<"\n";
              
              }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.05.2013, 22:45 #20
Цитата Сообщение от Игорь с++ Посмотреть сообщение
вот так наверное более правельно и красиво будет
более правильно будет не заморачиваться с массивами на стеке, а сделать динамические. А то и вовсе std::vector использовать, дабы не отвлекаться на вопросы выделения памяти, а сконцентрироваться на конкретной задаче.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.05.2013, 22:46 #21
Цитата Сообщение от lazybiz Посмотреть сообщение
Передавай в функцию указатель на массив, а в функции его заполняй.
Не?)
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
09.05.2013, 01:18  [ТС] #22
Цитата Сообщение от lazybiz Посмотреть сообщение
Не?)
ну вот и я про тоже , что бы не пудрить мозги не себе не окружающим .

Добавлено через 2 часа 29 минут
IGPIGP, тоже давольно интересный вариант , и Вам огромное спасибо !!!
0
IGPIGP
09.05.2013, 01:58     Функции и указатели
  #23

Не по теме:

Цитата Сообщение от Игорь с++ Посмотреть сообщение
довольно интересный вариант
Шутите ведь. Я тоже.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 01:58
Привет! Вот еще темы с ответами:

указатели и функции - C++
В командной строке задается символ и - либо количество символов, которые необходимо вывести, либо начальную и конечную позиции для вывода....

Указатели на функции - C++
Расшифруйте пожалуйста эту запись, что она значит, с переменным кол. аргументом понял, а эту нет: long int (*func4(int))(void) Если не...

Указатели и функции - C++
Рботаю с SDL2, пытаюсь распределить код по функциям, чтобы не месить кашу в main. Задумывалось иинциализировать указатели в отдельной...

Указатели на функции - C++
Решите задачу , используя один указатель на функцию . Разработайте четыре функции над двумя целыми параметрами, соответствующими...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.05.2013, 01:58
Ответ Создать тему
Опции темы

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