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

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

Войти
Регистрация
Восстановить пароль
 
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
#1

Объясните что не так с указателем в программе - C++

07.01.2013, 20:11. Просмотров 280. Ответов 3
Метки нет (Все метки)

Функция defStart возвращает указатель на int . В main другой указатель присваивает значение(адрес) возвращенного указателя. Затем в цикле вывожу значения используя нотацию массива
C++
1
 cout<<result[i]<<" ";
И Вместо
1 0 0 0 в консоль выводит 1 9083459837 9083409587340 0983459839487 . Зато если я вывожу вот так
C++
1
cout<<*result<<" ";
, то получаю ожидаемый результат 1 0 0 0 . Объясните почему так ? Ведь я не
инкрементирую указатель при выводе вторым способом и почему при нотации массива получается какая то билиберда .

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
#include<iostream>
using namespace std;
 
int * defStart(int x,int y)
   {
       int vector[4]={0,0,0,0};
       if(x==0)
       {vector[3]=1;}//направление вниз
       else if(x==11)
       {vector[2]=1;}//направление вверх
       if(y==0)
       {vector[0]=1;}//направление вправо
       else if(y==11)
       {vector[1]=1;}//направление влево
 
       return vector;
   }
 
int main()
{
    int *result=defStart(2,0);
    for(int i=0;i<=3;i++)
       {
           cout<<*result<<" ";
       }
    cout<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2013, 20:11     Объясните что не так с указателем в программе
Посмотрите здесь:

Объясните пожалуйста, что такое i, j, k в программе - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; #include &quot;locale.h&quot; #include &quot;conio.h&quot; int main() { int...

объясните, пожалуйста, что я делаю не так - C++
Ошибка LNK2005 &quot;bool __cdecl ForSortForBodyType(struct AutoCars &amp;,struct AutoCars &amp;)&quot; (?ForSortForBodyType@@YA_NAAUAutoCars@@0@Z) уже...

Коментарии к программе. Объясните пожалуйста что выполняют функции - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; typedef struct node { int number; node *next; ...

Объясните разницу между указателем и ссылкой - C++
Подскажите пожалуйста, в чем разница между этими двумя строками? Distance dist = *(new Distance); Distance&amp; dist = *(new Distance); ...

Что не так в программе? (цикл While) - C++
Условие: Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователем. #include &lt;iostream&gt;...

ошибка в программе, что не так.. - C++
Хотелось бы узнать, что я сделала не так.. Задание: последовательность а1а2... образована по принципу: an=(1-1/2)(1-1/3)...(1-1/(n+1))...

что не так в программе, выдает ошибку... - C++
помогите разобраться, пожалуйста, что не так?

что не так в программе? Виснет при компиляции - C++
Найти в массиве: 1) сумму элементов с нечётными номерами 2) Сумму элементов между первым и последним отрицательными элементами 3) в...

Что не так в программе для нахождения факториала? - C++
Вроде бы всё так, но учитель говорит переделать... #include &lt;iostream&gt; using namespace std; int main() { int n, res=1; ...

Помогите исправить ошибки в программе. Не пойму что не так - C++
Помогите пожалуйста понять суть ошибок. 20 ошибок &quot;binary '&lt;&lt;' : no operator defined which takes a right-hand operand of type 'class...

С моим кодом что-то не так! на калькуляторе одно число,а в программе другое( - C++
вот код программы,я только учусь,через неделю олимпиаду писать, так что выручайте)) #include &lt;iostream&gt; #include &lt;cstdlib&gt; using...

Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) - C++
Решил спустя некоторый промежуток времени попрактиковаться в c++. Написать программу, где при нажатии кнопок со стрелками по консоли...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,120
07.01.2013, 20:37     Объясните что не так с указателем в программе #2
Это потому, что не надо возвращать указатели на локальные переменные, они живут лишь до выхода из функции(области видимости в общем случае).
DU
1481 / 1057 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 20:41     Объясните что не так с указателем в программе #3
вообще возвращается указатель на объект, который тут же умирает при выходе из функции defStart.
так что поведение вообще неопределено. может выводится что угодно. чтобы понять, почему на разных итерациях выводятся разные значения нужно копаться в дизассемблере. можно предположить что память, где раньше находился вектор по мере вызова функции "cout<<*result<<" ";" перезаписывается по всякому (внутри ведь наверняка используются переменные, которые что-то со стеком делают).
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
07.01.2013, 20:46  [ТС]     Объясните что не так с указателем в программе #4
Thanks everybody всем помогавшим , Вы правы .
Yandex
Объявления
07.01.2013, 20:46     Объясните что не так с указателем в программе
Ответ Создать тему
Опции темы

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