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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание класса, представляющего многочлен http://www.cyberforum.ru/cpp-beginners/thread157761.html
Доброго времени суток, Профессионалы! Имеется задание: Создать класс Polynom ( многочлен ) с операциями +, +=, -, -=, =, ==, !=, >, <, >=, <=, *, *= Для выполнения операций >, <, >=, <=, надо подставить некоторое число вместо X? И , что делать с ==, != ?
C++ Вывод кавычек при использовании printf как с помощью printf напечатать строку в которой неоднократно содержаться двойные кавычки ? http://www.cyberforum.ru/cpp-beginners/thread157712.html
Шифратор пароля. Покритикуйте пожалуйста. C++
Это моя первая программка на С++, если кому не лень, натычте меня носом в ляпы. Чтобы не топтаться по граблям. :) #include <iostream> #include <string> #include <ctime> #include <fstream> using namespace std;
C++ Если в C++ аналог оператора with в Pascal?
Если в C++ аналог оператора with в Pascal?
C++ С++ устаревает?? http://www.cyberforum.ru/cpp-beginners/thread157681.html
С++ устаревает?? Или ещё нет?
C++ Как запустить system ("cls")? Собственно, подскажите, что нужно прописать, чтобы функция system("cls") заработала. подробнее

Показать сообщение отдельно
AK3RN
 Аватар для AK3RN
307 / 18 / 2
Регистрация: 01.05.2010
Сообщений: 250
06.08.2010, 12:48     Возврат указателя на массив из функции
Здравствуйте.
Пытаюсь вернуть указатель на массив из функции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
 
int* ReturnArray()
{
    int a[5] = {7,3,4,5,2};
    return a;
}
 
int main()
{
    int *x = ReturnArray();
    for(int z = 0; z < 5; z++)
        cout << *(x++) << endl;
    system ("pause");
    return 0;
}
Но выводится совершенно не то, что ожидалось, т.е. не 7 3 4 5 2, а 7 1244788 273393478 273992392 273992392(как видно, первый элемент массива правильный, а потом каша)

Проводил трассировку, сравнивал адреса элементов массива в памяти(как и положено для int со сдвигом на 4 байта) - адреса совпадают. Но вот значения, лежащие по этим адресам в главной функции и в функции ReturnArray разные. Интересует почему так.

Спасибо


UPD. Все, разобрался, надо было сообщения компилятора читать. И хоть чуть-чуть головой подумать
warning C4172: returning address of local variable or temporary
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru