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

Как использовать указатели при работе с массивами? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.65
chainiksi
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 25
28.11.2011, 16:03     Как использовать указатели при работе с массивами? #1
подскажите пожалуйста как правильно использовать указатели при работе с массивами. Как написать этк программу используя указатели?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 #include<iostream>
 using namespace std;
 const int n = 10;
 int main()
 {
 int X[n] = {1,2,3,4,5,6,7,8,9,10};
 int Y[n]= {2,3,4,6,7,3,4,5,1,9,};
 int Z[n]= {1,2,3,4,5,6,7,8,9,0};
 int U[n];
 for (int i = 0; i < n; i++)
 {
 U[i]=X[i]+Y[i]-Z[i];
 cout<<U[i]<<" ";
 }
 cout << endl;
 system("pause");
 }
если я правильно понял *X - это тоже самое, что и X[0] , а как написать при помощи указателей к примеру X[4]и т.п.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.12.2011, 15:59     Как использовать указатели при работе с массивами? #101
Цитата Сообщение от Bers Посмотреть сообщение
Вы думаете, новичок, который впервые слышет о каких там классах памяти, сразу поймёт что это такое, и о чем вапще идет речь?
значит он приступил к изучению языка программирования не имея фундаментальной базы об эвм. Это его проблемы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
02.12.2011, 16:03     Как использовать указатели при работе с массивами? #102
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это проблемы новичка.
Нормальный такой подход.
А зачем вообще тогда что-то говорить, если пофиг, как тебя поймут, и поймут ли вообще?

Цитата Сообщение от Deviaphan Посмотреть сообщение
Я же буквально на днях в твоём же вопросе про множественное наследование
мммм.... можно конечно щас начать лопатить все вопросы, что я задал за последние дни.
А можно попросить вас заново привести пример-иллюстрацию))

Цитата Сообщение от Deviaphan Посмотреть сообщение
Область памяти и есть объект. А ассоциирован объект с классом.
Всегда думал, что класс - это описание объекта. И не более того.
В боевом режиме программист работает с объектами, а не классами.

И работает он с объектами, а не с "именами объектов, знающие, где находится сам объект".

А вот по Страуструповски получается, что программист работает именно с типами (классами), и именами объектов.

Причем сама по себе область памяти имени не имеет. Поэтому имя объекта, и сам объект друг с другом не связаны. Просто имя знает, где находится объект.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 16:05     Как использовать указатели при работе с массивами? #103
Цитата Сообщение от Bers Посмотреть сообщение
В боевом режиме программист работает с объектами, а не классами.
С объектами конкретного класса. Просто "объект" это указатель на void (условно говоря). Пока неизвестен тип объекта, это просто набор ничего не значащих бит.

Добавлено через 47 секунд
Цитата Сообщение от Bers Посмотреть сообщение
Причем сама по себе область памяти имени не имеет
Так и есть. это адрес и всё.
Bers
Заблокирован
02.12.2011, 16:06     Как использовать указатели при работе с массивами? #104
Цитата Сообщение от Deviaphan Посмотреть сообщение
С объектами конкретного класса. Просто "объект" это указатель на void (условно говоря). Пока неизвестен тип объекта, это просто набор ничего не значащих бит.

указатель на войд == область памяти ?

Если следовать вашей логике.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 16:09     Как использовать указатели при работе с массивами? #105
Цитата Сообщение от Bers Посмотреть сообщение
Поэтому имя объекта, и сам объект друг с другом не связаны. Просто имя знает, где находится объект.
Так и есть. Лучше всего это демонстрируется массивом объектов, где вообще все объекты безымянные.

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
указатель на войд == область памяти
void - отсутствие типа. Область памяти сама по себе не имеет типа. Имелся в виду не сам указатель, а память, куда он указывает.

Добавлено через 1 минуту
Посмотрел пример с предыдущей страницы? По нему вопросы задавай. Пока с простым примером не разберёшься к классам (которые class и struct) лучше не соваться.
Bers
Заблокирован
02.12.2011, 16:47     Как использовать указатели при работе с массивами? #106
Цитата Сообщение от Deviaphan Посмотреть сообщение
i по прежнему указывает на объект типа int, а f на объект типа float. Как видишь, одна и та же область памяти(объект) ассоциируется с разными классами (типами).
Ну мы недавно на эту тему уже беседовали.
Один и тот же объект может по разному интерпретироваться.

Но штука в том, что какой именно объект живет в этой области, знает программист.
И он может интерпретировать этот объект, как угодно, с помощью указателей.

Например, можно объект класса some интерпритировать, как объект класса some2
И если при этом, классы some и some2 будут несовместимыми, можно схлопотать трудно уловимую ошибку под названием "сам дурак".

ВЫ можете называть это "осациировать объект с классом", или как то ещё. Но я гвоорю вам, что решающее значение имеет то, объект какого типа на самом деле живет в этой памяти.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 16:52     Как использовать указатели при работе с массивами? #107
Цитата Сообщение от Bers Посмотреть сообщение
Но штука в том, что какой именно объект живет в этой области, знает программист.
И он может интерпретировать этот объект, как угодно, с помощью указателей.
Интерпретация и есть ассоциация. Без привязки к конкретному типу, любой объект это просто набор бит.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.12.2011, 17:02     Как использовать указатели при работе с массивами? #108
Цитата Сообщение от Bers Посмотреть сообщение
объект какого типа на самом деле живет в этой памяти.
в памяти нет объектов. объект и есть память. пример
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
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
 
void *f(size_t size, size_t sizelem)
{
    void *t = (void*) malloc(size * sizelem);
    if (!t)
        exit -1;
    else
        return (void*)t;
}
 
int main()
{
    int i = 5;
    double *y = (double*) f(i, sizeof(double));
    int *p = y;
    i *= 2;
 
    while(i--)
    {
        p[i] = i;
        printf("%2d", p[i]);
    }
 
    puts("");
    i = 5;
    while(i--)
    {
        printf("%e", y[i]);
        puts("");
    }
 
    return 0;
}
Bers
Заблокирован
02.12.2011, 17:11     Как использовать указатели при работе с массивами? #109
Цитата Сообщение от Deviaphan Посмотреть сообщение
Интерпретация и есть ассоциация. Без привязки к конкретному типу, любой объект это просто набор бит.
Это естейственно.
Я о том толкую, что отдельный кусок памяти имеет логического значение объекта
Другими словами, значением отдельных битов является значения данных объекта.
И этот объект всегда имеет тип. Хотя с помощью всяких указателей можно по разному интерпретировать значение куска памяти.

Ну так вот, о том какое логическое значение имеет кусок памяти. А другими словами, что такое объект вообще - знают только программист, и компилятор. И то, последний это знание может "потерять".

Добавлено через 5 минут
даже более того, как я уже писал выше, сам механизм ассоциации объекта с памятью - это низкроуровневый механизм. И это - трудности компилятора.

Программисту на верхнем уровне вообще не нужно об этом думать.
Программисту нужно лишь знать, что именно на самом деле живет по такому то адресу в памяти.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 17:15     Как использовать указатели при работе с массивами? #110

Не по теме:

Мне это надоело.


Я самоустраняюсь.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.12.2011, 17:29     Как использовать указатели при работе с массивами? #111
Цитата Сообщение от Bers Посмотреть сообщение
Программисту на верхнем уровне вообще не нужно об этом думать.
Программисту нужно лишь знать, что именно на самом деле живет по такому то адресу в памяти.
тут я поддержу с оговоркой. Ты говоришь о прикладном программировании. Согласен что в большинстве случаев вникать в даташит пзу, например, конечно не надо. Но все таки базу какую-то элементарную иметь обязательно. Не забывай о том что программист работает с железом, а не разумом. Машина дура, она сделает все что ей скажешь. Вот Си язык высокого уровня? Не самого но все таки высокого, как же тогда родилась ос юникс? ведь программисту на верхнем уровне не надо думать как взаимодействует железо между собой.
Цитата Сообщение от Deviaphan Посмотреть сообщение
Мне это надоело.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 18:02     Как использовать указатели при работе с массивами?
Еще ссылки по теме:

C++ Использование функций при работе с двумерными массивами
C++ Проблемма при работе с массивами структур
Ошибка с памятью при работе с двумерными массивами. C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.12.2011, 18:02     Как использовать указатели при работе с массивами? #112
Самое время закрыть эту тему. Лучше поздно, чем никогда
Yandex
Объявления
02.12.2011, 18:02     Как использовать указатели при работе с массивами?
Закрытая тема Создать тему
Опции темы

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