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

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

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
#1

Указатели и непонятки в одном флаконе! - C++

30.09.2011, 16:43. Просмотров 311. Ответов 6
Метки нет (Все метки)

Здравствуйте. Решил поднять новую тему про указатели. Да, литературу читал, но нихрена не понятно. Конечно, базовые концепции - не оч трудно, но работа с многомерными массивами - это п****ц. Сорри, просто мозги уже кипят.
Короче вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
#include <conio.h>
 
main ()
{
   int a[2][2][2] ={{{1,2},{4,5}},{{1,2}}};
   int *(*ptr)[2];
 
   ptr[0] = a[0][0];
   ptr[1] = a[0][1];
 
   cout << "a[0][0] = " << a[0][0] << " == ptr[0] = " << ptr[0]
    << endl << endl;
 
   getch();
 
   return 0;
}
Выдаёт ошибку "LValue required" в 9 и 10 строке. А почему? ptr[0] - указатель. a[0][0] - тоже указатель. Но всё же присвоение не прокатывает. Итак, я хочу услышать не только правильное исправлени, но и ОБЪЯСНЕНИЕ ДЛЯ ЧАЙНИКОВ КАК ЭТО РАБОТАЕТ.

P.S. Повторюсь, мне не нужна просто моя исправленная программа, мне нужно объяснение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 16:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели и непонятки в одном флаконе! (C++):

Хочу EXE и DLL в одном флаконе. Не получается. - C++
Хочу в EXE файл добавить функцию на экспорт. Типа EXE и DLL в одном флаконе. Но глючит как-то все. Выяснилось, что при загрузке библиотеки...

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

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной - C++
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; void min_max(int*pa, int*pb,...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов? - C++
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...

Отсортировать массив и вывести на экран (массивы и указатели на указатели) - C++
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F студента. Отсортировать массив S по...

6
MrGluck
Модератор
Эксперт CЭксперт С++
7418 / 4533 / 671
Регистрация: 29.11.2010
Сообщений: 12,281
30.09.2011, 16:49 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
 
int main ()
{
   int a[2][2][2] ={{{1,2},{4,5}},{{1,2}}};
   int *ptr[2];
 
   ptr[0] = a[0][0];
   ptr[1] = a[0][1];
 
   std::cout << "a[0][0] = " << a[0][0] << " == ptr[0] = " << ptr[0]
        << std::endl << std::endl;
 
   getch();
 
   return 0;
}
Неправильно объявлен массив указателей
0
Петррр
5965 / 3402 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
30.09.2011, 16:52 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main ()
{
   int a[2][2][2] ={{{1,2},{4,5}},{{1,2}}};
   int *ptr[2];
   ptr[0] = a[0][0];
   ptr[1] = a[0][1];
   cout << "a[0][0] = " << a[0][0] << "\n ptr[0] = " << ptr[0]
        << endl << endl;
   system("pause");
   return 0;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
30.09.2011, 16:52 #4
Цитата Сообщение от dimcoder Посмотреть сообщение
int *(*ptr)[2];
- это указатель на строку из двух элементов а не отдельный её элемент
от компилятора идёт такое сообщение error C2440: '=' : cannot convert from 'int [2]' to 'int *[2]'

Цитата Сообщение от dimcoder Посмотреть сообщение
ptr[0] = a[0][0];
*ptr[1] = a[0][1];
0
Петррр
30.09.2011, 16:52
  #5

Не по теме:

Опоздал

0
-=ЮрА=-
30.09.2011, 16:56
  #6

Не по теме:

Цитата Сообщение от Петррр Посмотреть сообщение
Не по теме:
Опоздал
- я вообще наивно полагал что первым успею ответить
PS:Когда раздел С/С++ глядят сразу 200 пар глаз сложно вообще на первой странице успеть отпостить

0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
30.09.2011, 17:22  [ТС] #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- это указатель на строку из двух элементов а не отдельный её элемент
от компилятора идёт такое сообщение error C2440: '=' : cannot convert from 'int [2]' to 'int *[2]'
Я думал, что енто означает, что объявляю массив указателей ptr из 2 элементов, каждый из которых содержит указатель на (int *), а не int. Поэтому с этого места можно поподробнее. Короче опять нихрена не понятно...
Ну и если мы заговорили о строках, то вот вам попутный вопрос:
C++
1
2
char *string;
*string = "smth"
и "smth" запишится в случайную область памяти, что может привести к неприятным последствиям или эта запись эквивалентна:
C++
1
char string[10] = "smth";
0
30.09.2011, 17:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2011, 17:22
Привет! Вот еще темы с ответами:

Написать программу сортировки через указатели на указатели - C++
Вот моя программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; //Сортировка &quot;пузырьком&quot;. ...

Указатели на слонов или А зачем нужны указатели? - C++
Знаю что таких вопросов было уйма, но я так и не нашел ответа на свой вопрос. Для чего нужны указатели? Что такое указатели я знаю, это...

Используются ли на практике указатели на указатели объектов? - C++
Имеются ввиду указатели именно на объекты, а не динамические массивы. Например такой: Object** obj; А как насчёт такого: Object***...

Найти минимальный элемент и все элементы, расположение в одном ряду и в одном столбце с минимальным - C++
Дана квадратная матрица A порядка n. Составить программу, которая находит минимальный элемент и все элементы, расположение в одном ряду и в...


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

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

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