Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995

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

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

Студворк — интернет-сервис помощи студентам
Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x[i] присвоить указатель y[i]? через &x[i] не дается
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.07.2010, 14:10
Ответы с готовыми решениями:

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

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

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

25
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:21
Напиши как делаешь...
Может так?
C++
1
2
3
4
5
int x[3], y[3], *p;
    p = &x[2];
    ...// использование p как указ на x.
    p = &y[2];
    ...// использование p как указ на y.
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
16.07.2010, 14:27  [ТС]
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
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:30
Цитата Сообщение от KuKu Посмотреть сообщение
как понимаю это значит левому операнду нельзя ничего присваивать
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
1
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:33
Как по мне если 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
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
16.07.2010, 14:40  [ТС]
Цитата Сообщение от 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
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:42
Цитата Сообщение от KuKu Посмотреть сообщение
мы же тут просто присваиваем значения, а не указатели
Ничего другого у тебя не выйдет. Только обменять значения.
0
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 14:43
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый
А что это такое? Левым операндом это быть не может никак.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 14:44
Цитата Сообщение от Skoi Посмотреть сообщение
Нет, это значит что тут у Вас НЕТ левого операнда вообще. Чему присваивать-то?
Куда делся? l-value и левый операнд - разные вещи.
0
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:44
KuKu, то что вы хотите сделать в приницпе невозможно
потому что указатель на x[i] формируется в процессе программы
&x[i]= &x+i*sizeof(<тип элемента>);
это невозмлжно, да и не понятнозачем это вообше нужно
можно например зранить в массиве не значения а указатели
int* x[100];
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:48
Цитата Сообщение от KuKu Посмотреть сообщение
Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x[i] присвоить указатель y[i]? через &x[i] не дается
Еще можно так:
C
1
2
int arr[3];
int* p=arr+3;
1
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
16.07.2010, 14:52
Цитата Сообщение от 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
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:53
Цитата Сообщение от KuKu Посмотреть сообщение
&x[i] - левый, &X[i] - правый, или я не так вас понял ?
l-value - это объект, или переменная, r-value - некоторое значение (но не переменная).
Попытка провести присваивание &x[i] = &X[i] равносильна попытке присвоить числу 5 значение некоторой переменной.
1
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 14:56
KuKu, короче это не возможно!
и кстати, ты классное название темы придумал
в массиве нет членов, есть элементы
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
16.07.2010, 14:58  [ТС]
есть входящие данные пусть это массив 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
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 15:02
KuKu, в этом случае советую сделать массивы указателей
int* x[100];
int* y[100];
int* z[100];

y[0]= x[0];
z[0]= x[0];
и вуаля они все указывают на один элемент
P.S. не забывай выделять память под элементы
1
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
16.07.2010, 15:06  [ТС]
Ладно вроде понял, всем спасибо. А что там за дебаты были по поводу левого операнда, так и не ясно
0
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
16.07.2010, 15:08
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Куда делся?
Куда делся - лучше узнать у автора.
Ну если конечно неправильный операнд - тоже операнд, тогда да... но думаю это нонсенс.
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
16.07.2010, 15:11  [ТС]
Skoi, ваши туманные высказывания сводятся к тому, что сказал
Nameless One, или что то другое ?
0
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 15:13
KuKu, смотри
&a- это не переменая, а значение
то есть что такое a для компилятора?
это просто число, адрес и его невозможно поменять
&a= 8 для компилятора тоже самое что и 53233= 8
советую тебе пучить ассемблер, там все сразу встант на свои места
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.07.2010, 15:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru