Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/50: Рейтинг темы: голосов - 50, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 25
1

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

28.11.2011, 16:03. Показов 9198. Ответов 111
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите пожалуйста как правильно использовать указатели при работе с массивами. Как написать этк программу используя указатели?
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]и т.п.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 16:03
Ответы с готовыми решениями:

Указатели при работе с одномерными и двумерными массивами
Помогите Даны натуральное число n, целые числа а1,...,аn . Выяснить, имеется ли среди чисел...

Ошибка при работе с массивами
Здравствуйте. Хочу сделать программу, которая сортирует цифры. Вот код: #include &lt;iostream&gt; ...

Ошибка при работе с массивами char
Задание: написать функцию для сложения целых двоичных чисел. Слагаемые должны иметь тип unsigned...

Использование показателей при работе с массивами
n натуральное, a1,...,an действительные числа. Найти : a1a2n+a2a2n-1+...+anan+1

111
Заблокирован
02.12.2011, 15:59 101
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Bers Посмотреть сообщение
Вы думаете, новичок, который впервые слышет о каких там классах памяти, сразу поймёт что это такое, и о чем вапще идет речь?
значит он приступил к изучению языка программирования не имея фундаментальной базы об эвм. Это его проблемы.
0
Заблокирован
02.12.2011, 16:03 102
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это проблемы новичка.
Нормальный такой подход.
А зачем вообще тогда что-то говорить, если пофиг, как тебя поймут, и поймут ли вообще?

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

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

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

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

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

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

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

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

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

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

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

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

ВЫ можете называть это "осациировать объект с классом", или как то ещё. Но я гвоорю вам, что решающее значение имеет то, объект какого типа на самом деле живет в этой памяти.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 16:52 107
Цитата Сообщение от Bers Посмотреть сообщение
Но штука в том, что какой именно объект живет в этой области, знает программист.
И он может интерпретировать этот объект, как угодно, с помощью указателей.
Интерпретация и есть ассоциация. Без привязки к конкретному типу, любой объект это просто набор бит.
0
Заблокирован
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;
}
0
Заблокирован
02.12.2011, 17:11 109
Цитата Сообщение от Deviaphan Посмотреть сообщение
Интерпретация и есть ассоциация. Без привязки к конкретному типу, любой объект это просто набор бит.
Это естейственно.
Я о том толкую, что отдельный кусок памяти имеет логического значение объекта
Другими словами, значением отдельных битов является значения данных объекта.
И этот объект всегда имеет тип. Хотя с помощью всяких указателей можно по разному интерпретировать значение куска памяти.

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

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

Программисту на верхнем уровне вообще не нужно об этом думать.
Программисту нужно лишь знать, что именно на самом деле живет по такому то адресу в памяти.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 17:15 110

Не по теме:

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


Я самоустраняюсь.
2
Заблокирован
02.12.2011, 17:29 111
Цитата Сообщение от Bers Посмотреть сообщение
Программисту на верхнем уровне вообще не нужно об этом думать.
Программисту нужно лишь знать, что именно на самом деле живет по такому то адресу в памяти.
тут я поддержу с оговоркой. Ты говоришь о прикладном программировании. Согласен что в большинстве случаев вникать в даташит пзу, например, конечно не надо. Но все таки базу какую-то элементарную иметь обязательно. Не забывай о том что программист работает с железом, а не разумом. Машина дура, она сделает все что ей скажешь. Вот Си язык высокого уровня? Не самого но все таки высокого, как же тогда родилась ос юникс? ведь программисту на верхнем уровне не надо думать как взаимодействует железо между собой.
Цитата Сообщение от Deviaphan Посмотреть сообщение
Мне это надоело.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
02.12.2011, 18:02 112
Самое время закрыть эту тему. Лучше поздно, чем никогда
0
02.12.2011, 18:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2011, 18:02
Помогаю со студенческими работами здесь

Использование показателей при работе с массивами
Даны a1,...,an действительные числа, n* натуральное число. Если в этой последовательности...

Проблемма при работе с массивами структур
Разработать программу , позволяющую добавлять данные структур с указанными полями в массив,...

Указатели при работе со строками char*
Помогите разобраться с указателями #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace...

Ошибка в перегрузке оператора - при работе с массивами
Текст программы: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; class array ...


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

Или воспользуйтесь поиском по форуму:
112
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru