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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
#1

Указатель на элемент массива - C++

16.07.2010, 14:10. Просмотров 1152. Ответов 25
Метки нет (Все метки)

Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x[i] присвоить указатель y[i]? через &x[i] не дается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на элемент массива (C++):

Создать указатель на элемент массива - C++
Как создать указатель на элемент a Например у меня элемент a выглядит так: *(*(a + i) + j)

Почему мы не разыменовываем указатель на элемент массива? - C++
int *ptrarray = new int ; for (int i = 0; i < 10; i++) { ptrarray = i; cout << ptrarray << " "; } ...

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

Может ли указатель показывать на последний элемент массива, а не на первый? - C++
Люди!!!! подскажите! может ли указатель показывать на последний элемент массива, а не на первый???(С++) и как это сделать, если...

Как передвигать указатель на следующий элемент массива структур? - C++
Вопрос относительно использования символа стрелка '->'. Допустим, есть такой код: #include<iostream> using namespace std; struct...

Функция должна возвращать указатель на первый элемент массива,удовлетворяющий условию - C++
Функция должна возвращать указатель на первый элемент массива,удовлетворяющий условию(в данном случае используется указатель на бинарный...

25
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:21 #2
Напиши как делаешь...
Может так?
C++
1
2
3
4
5
int x[3], y[3], *p;
    p = &x[2];
    ...// использование p как указ на x.
    p = &y[2];
    ...// использование p как указ на y.
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
16.07.2010, 14:27  [ТС] #3
C++
1
2
3
4
bool Neuron::SetInput(float *X)
{
    for(int i=0;i<n;i++) &x[i]=&X[i];
...
float* x - в самом классе

ошибка
'=' : left operand must be l-value
как понимаю это значит левому операнду нельзя ничего присваивать
вечная путаница с указателями
0
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:30 #4
Цитата Сообщение от KuKu Посмотреть сообщение
как понимаю это значит левому операнду нельзя ничего присваивать
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
1
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:33 #5
Как по мне если float x - просто массив то так можно
C++
1
2
3
4
bool Neuron::SetInput(float *X)
{
        for(int i=0;i<n;i++) x[i] = * X[i];
...
1
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
16.07.2010, 14:40  [ТС] #6
Цитата Сообщение от Skoi Посмотреть сообщение
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
м...
&x[i]=&X[i];
&x[i] - левый, &X[i] - правый, или я не так вас понял ?

Цитата Сообщение от FireNovel Посмотреть сообщение
Как по мне если float x - просто массив то так можно
C++
1
2
3
4
bool Neuron::SetInput(float *X)
{
        for(int i=0;i<n;i++) x[i] = * X[i];
...
мы же тут просто присваиваем значения, а не указатели
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:42 #7
Цитата Сообщение от KuKu Посмотреть сообщение
мы же тут просто присваиваем значения, а не указатели
Ничего другого у тебя не выйдет. Только обменять значения.
0
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:43 #8
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый
А что это такое? Левым операндом это быть не может никак.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:44 #9
Цитата Сообщение от Skoi Посмотреть сообщение
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
Куда делся? l-value и левый операнд - разные вещи.
0
D@rkD@iver
111 / 111 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:44 #10
KuKu, то что вы хотите сделать в приницпе невозможно
потому что указатель на x[i] формируется в процессе программы
&x[i]= &x+i*sizeof(<тип элемента>);
это невозмлжно, да и не понятнозачем это вообше нужно
можно например зранить в массиве не значения а указатели
int* x[100];
0
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.07.2010, 14:48 #11
Цитата Сообщение от KuKu Посмотреть сообщение
Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x[i] присвоить указатель y[i]? через &x[i] не дается
Еще можно так:
C
1
2
int arr[3];
int* p=arr+3;
1
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:52 #12
Цитата Сообщение от KuKu Посмотреть сообщение
мы же тут просто присваиваем значения, а не указатели
А какой смысл присваивать, каждому адресу элемента одного массива - адрес каждого эл-та другого массива. Чёто я не понимаю
Не проще ли сделать как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Neuron
{float *x;
int array_size; // чтобы 
...
};
bool Neuron::SetInput(float *X, int n)
{
        x = X;
        array_size = n;
}
 
int main()
{
float a [4];
 
...  SetInput(a, 4);
 
}
1
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.07.2010, 14:53 #13
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый, &X[i] - правый, или я не так вас понял ?
l-value - это объект, или переменная, r-value - некоторое значение (но не переменная).
Попытка провести присваивание &x[i] = &X[i] равносильна попытке присвоить числу 5 значение некоторой переменной.
1
D@rkD@iver
111 / 111 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:56 #14
KuKu, короче это не возможно!
и кстати, ты классное название темы придумал
в массиве нет членов, есть элементы
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
16.07.2010, 14:58  [ТС] #15
есть входящие данные пусть это массив X, они используются сразу в нескольких местах... грубо говоря
y[0]=x[0]
y[1]=x[1]
y[2]=x[2]

z[0]=x[1]
z[1]=x[0]
z[2]=x[1256]

И таких массивов как y,z много, и что бы десять раз не перезаписывать массивы y,z при изменениях X надо что то с указателями

Добавлено через 52 секунды
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
KuKu, короче это не возможно!
и кстати, ты классное название темы придумал
в массиве нет членов, есть элементы
спасибо, долго слово подбирал ... а я думаю что столько народу сразу пришло
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 14:58
Привет! Вот еще темы с ответами:

Вывести минимальный элемент введенного с клавиатуры массива целых чисел (через указатель) - C++
Как написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел? Для доступа к элементам массива...

Приведение любого двумерного массива к типу указатель на указатель - C++
Допустим, есть несколько массивов int arr1; int arr2; int arr3; Какое преобразование нужно сделать, чтобы подобные присвоения...

Как добавить элемент в очередь, используя указатель на последний элемент? - C++
Не пойму как добавить элемент в очередь используя указатель на последний элемент. Выполняю задание из книги М Доусона с++ и вот реализовать...

Вставить после данного элемента списка новый элемент, и вывести указатель на добавленный элемент - C++
Дано число D и указатель Р0 на один из элементов пустая двозвязного списка. Вставить после данного элемента списка новый элемент со...


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

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

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