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

указатель на член в массиве - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
16.07.2010, 14:10     указатель на член в массиве #1
Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x[i] присвоить указатель y[i]? через &x[i] не дается
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FireNovel
 Аватар для 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.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
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
как понимаю это значит левому операнду нельзя ничего присваивать
вечная путаница с указателями
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:30     указатель на член в массиве #4
Цитата Сообщение от KuKu Посмотреть сообщение
как понимаю это значит левому операнду нельзя ничего присваивать
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
FireNovel
 Аватар для 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];
...
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
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];
...
мы же тут просто присваиваем значения, а не указатели
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:42     указатель на член в массиве #7
Цитата Сообщение от KuKu Посмотреть сообщение
мы же тут просто присваиваем значения, а не указатели
Ничего другого у тебя не выйдет. Только обменять значения.
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:43     указатель на член в массиве #8
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый
А что это такое? Левым операндом это быть не может никак.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:44     указатель на член в массиве #9
Цитата Сообщение от Skoi Посмотреть сообщение
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
Куда делся? l-value и левый операнд - разные вещи.
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:44     указатель на член в массиве #10
KuKu, то что вы хотите сделать в приницпе невозможно
потому что указатель на x[i] формируется в процессе программы
&x[i]= &x+i*sizeof(<тип элемента>);
это невозмлжно, да и не понятнозачем это вообше нужно
можно например зранить в массиве не значения а указатели
int* x[100];
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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;
FireNovel
 Аватар для 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);
 
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.07.2010, 14:53     указатель на член в массиве #13
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый, &X[i] - правый, или я не так вас понял ?
l-value - это объект, или переменная, r-value - некоторое значение (но не переменная).
Попытка провести присваивание &x[i] = &X[i] равносильна попытке присвоить числу 5 значение некоторой переменной.
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:56     указатель на член в массиве #14
KuKu, короче это не возможно!
и кстати, ты классное название темы придумал
в массиве нет членов, есть элементы
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
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, короче это не возможно!
и кстати, ты классное название темы придумал
в массиве нет членов, есть элементы
спасибо, долго слово подбирал ... а я думаю что столько народу сразу пришло
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 15:02     указатель на член в массиве #16
KuKu, в этом случае советую сделать массивы указателей
int* x[100];
int* y[100];
int* z[100];

y[0]= x[0];
z[0]= x[0];
и вуаля они все указывают на один элемент
P.S. не забывай выделять память под элементы
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
16.07.2010, 15:06  [ТС]     указатель на член в массиве #17
Ладно вроде понял, всем спасибо. А что там за дебаты были по поводу левого операнда, так и не ясно
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 15:08     указатель на член в массиве #18
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Куда делся?
Куда делся - лучше узнать у автора.
Ну если конечно неправильный операнд - тоже операнд, тогда да... но думаю это нонсенс.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
16.07.2010, 15:11  [ТС]     указатель на член в массиве #19
Skoi, ваши туманные высказывания сводятся к тому, что сказал
Nameless One, или что то другое ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 15:13     указатель на член в массиве
Еще ссылки по теме:

указатель на функцию-член! C++
Указатель на функцию-член C++
Указатель на функцию-член класса C++

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

Или воспользуйтесь поиском по форуму:
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 15:13     указатель на член в массиве #20
KuKu, смотри
&a- это не переменая, а значение
то есть что такое a для компилятора?
это просто число, адрес и его невозможно поменять
&a= 8 для компилятора тоже самое что и 53233= 8
советую тебе пучить ассемблер, там все сразу встант на свои места
Yandex
Объявления
16.07.2010, 15:13     указатель на член в массиве
Ответ Создать тему
Опции темы

Текущее время: 21:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru