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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.65
chainiksi
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 25
#1

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

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

подскажите пожалуйста как правильно использовать указатели при работе с массивами. Как написать этк программу используя указатели?
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 16:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как использовать указатели при работе с массивами? (C++):

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

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

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

Не получается перегрузить оператор ++ при работе с массивами - C++
Текст: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; class array { public: array(); ...

Ошибка с памятью при работе с двумерными массивами. - C++
{ int i, j, c, kol; n=StrToInt(Edit1-&gt;Text); m=StrToInt(Edit2-&gt;Text); for(i=0; i&lt;n; i++) { for(j=0; j&lt;m; j++)...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:01 #61
Цитата Сообщение от Bers Посмотреть сообщение
Как? "так" ?
Твердое, мягкое, твердое.
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну твёрдости присвоить "мягко" - не фокус. Плюсы же позволяют твёрдости присвоить зелень, а температуре - алмаз. Причём, автор мнимых граблей полиморфизма и все, кто в эти грабли поверил, будут в обоих случаях юзить преобразование запаха в химическую формулу, что в корне не верно, но язык то в том не виноват.
Вы ошиблись, Вам в литературный раздел.
0
Bers
Заблокирован
30.11.2011, 16:08 #62
fasked, внимательно изучите этот код:

C++
1
2
3
4
5
6
7
int main()
{
    int b=10.0; 
    double a = b;   
    
    return 0;
}
C++ язык строгой типизации. Нельзя доблу присвоить инт.
С++ вовсю использует механизмы неявных преобразований типов.

Понятно, что переменной a будит присвоен double, а не int.
В приведенном выше коде присутствует как минимум два скрытных конструктора объектов.

При этом, если бы a и b являлись "тяжелыми" объектами, то...

Я сам когда узнал в первый раз, и до меня дошла вся прелесть этой ситуации, то первое что я сделал - это проверил свои коды на предмет "а где ещё оказывается срабатывает левое копирование объектов, о котором я даже и не знаю ничего?"
0
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 946
Регистрация: 25.07.2009
Сообщений: 10,700
30.11.2011, 16:19 #63
Цитата Сообщение от Bers Посмотреть сообщение
левое копирование объектов
Мало было "неявных указателей"... Более детальное описание этого действа будет?

И кстати...

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
будет
...
не будет
Цитата Сообщение от Bers Посмотреть сообщение
переменной a будит присвоен double
fasked, epic fail...

2
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:25 #64
Цитата Сообщение от Bers Посмотреть сообщение
Нельзя доблу присвоить инт.
Почему же нельзя? Стандарт не запрещает. При преобразовании из вещественных чисел в целые возможно UB. Впрочем, как и в обратном случае.
Цитата Сообщение от Bers Посмотреть сообщение
При этом, если бы a и b являлись "тяжелыми" объектами, то...
То это была бы уже другая история, которая описывается отдельными пунктами в стандарте.
0
Bers
Заблокирован
30.11.2011, 16:34 #65
Вдумайся ещё раз вот эту фразу:

Цитата Сообщение от fasked Посмотреть сообщение
Почему же нельзя? Стандарт не запрещает. При преобразовании из вещественных чисел в целые возможно UB. Впрочем, как и в обратном случае.
Можно даже вот так сказать:
В с++ нельзя твердому присвоить мягкое. Но если можно преобразовать мягкое в твердое - то можно.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:43 #66
Цитата Сообщение от Bers Посмотреть сообщение
Можно даже вот так сказать:
В с++ нельзя твердому присвоить мягкое. Но если можно преобразовать мягкое в твердое - то можно.
Вы можете как угодно говорить, а верить надо только стандарту. В стандарте написано можно, а то, что Вы об этом не знали когда-то или до сих пор не знаете исключительно Ваши проблемы.
Стандарт надо читать, а не разводить демагогии с твердыми и мягкими. Или Вы это делаете ради красоты слова?
Цитата Сообщение от Bers Посмотреть сообщение
Вдумайся ещё раз вот эту фразу:
Во что вдуматься? Я прекрасно понимаю и осознаю, что я пишу. Мне не надо перечитывать свои же слова.

И еще раз. Преобразования вида floating-integral и неявные преобразования других типов данных абсолютно разные вещи!
0
Bers
Заблокирован
30.11.2011, 16:44 #67
Цитата Сообщение от fasked Посмотреть сообщение
Во что вдуматься?
Нельзя инту присвоить не_инт.
Вы инту не доубл присваиваете, а инт. То есть, сначала доубл будит преобразован в инт, и только потом будит выполнено присваивание.
0
Сыроежка
Заблокирован
30.11.2011, 16:45 #68
Цитата Сообщение от Bers Посмотреть сообщение
Вдумайся ещё раз вот эту фразу:

Можно даже вот так сказать:
В с++ нельзя твердому присвоить мягкое. Но если можно преобразовать мягкое в твердое - то можно.
Переводя это на нормальный человеческий язык, это означает, что объект одного типа можно присвоить объекту другого типа, если существует функция преобразования либо если компилятору разрешено самостоятельно осуществлять такое преобразование (как для чисел с плавающей точкой, точнее сказать, как для фундаментальных типов).
Функциями преобразования называются конструктор, принимающий один аргумент, либо оператор-функция преобразования типов.
1
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.11.2011, 16:49 #69
Цитата Сообщение от Bers Посмотреть сообщение
Вы инту не доубл присваиваете, а инт. То есть, сначала доубл будит преобразован в инт, и только потом будит выполнено присваивание.
Я Вам даже больше скажу. Здесь double prvalue преобразовывается в integral prvalue.
0
Bers
30.11.2011, 16:49
  #70

Не по теме:

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

Но вот я заметил, вы меня почему то обычно всегда понимаете.

0
Сыроежка
Заблокирован
30.11.2011, 16:53 #71
Цитата Сообщение от Bers Посмотреть сообщение

Не по теме:

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

Но вот я заметил, вы меня почему то обычно всегда понимаете.

Просто я для вашей исходной фразы использовал сначала подстрочник: если нельзя, но очень хочется, то можно!
1
alkagolik
Заблокирован
30.11.2011, 17:44 #72
я вас разочарую, всякие там "переменные" или "объекты" существуют лишь в теории на приктике же есть память и ее адрес и всьо.
0
Bers
Заблокирован
30.11.2011, 17:47 #73
Цитата Сообщение от alkagolik Посмотреть сообщение
я вас разочарую, всякие там "переменные" или "объекты" существуют лишь в теории на приктике же есть память и ее адрес и всьо.
Я вас тоже разочарую. Всякие там "памяти" и "адреса" существуют лишь в теории. На практике же есть только электрический ток в микросхемах: есть сигнал, нет сигнала.
0
alkagolik
Заблокирован
30.11.2011, 20:00 #74
Цитата Сообщение от Bers Посмотреть сообщение
Я вас тоже разочарую. Всякие там "памяти" и "адреса" существуют лишь в теории. На практике же есть только электрический ток в микросхемах: есть сигнал, нет сигнала.
"Память" есть, запоминающее устройство. Простейшее одноразрядное зу - триггер. И даже способов построить зу есть несколько, отсюда и разные типы зу и разный тип доступа к адресам зу, и адреса - двоичные векторы, хранящиеся в зу. 8 триггеров = 8 разрядный регистр, который и относится к зу, потому как единственным его назначением является хранение данных в двоичном виде.
0
Bers
Заблокирован
30.11.2011, 20:00 #75
Цитата Сообщение от alkagolik Посмотреть сообщение
"Память" есть, запоминающее устройство. Простейшее одноразрядное зу - триггер. И даже способов построить зу есть несколько, отсюда и разные типы зу и разный тип доступа к адресам зу, и адреса - двоичные векторы, хранящиеся в зу. 8 триггеров = 8 разрядный регистр, который и относится к зу, потому как единственным его назначением является хранение данных в двоичном виде.
какое это имеет отношение к теме?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 20:00
Привет! Вот еще темы с ответами:

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

Использование указателей при работе с одномерными массивами - C++
Реализовать на Си. Даны натуральное число n, действительные числа a1,...,an. Если последовательность a1,...,an упорядочена по...

Указатели при работе со строками char* - C++
Помогите разобраться с указателями #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main() { char*...

Как работают указатели с массивами - C++
Хочу на простом примере перестановки двух элементов уяснить - как работают указатели с массивами, но ничего не получается. Объясните на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.11.2011, 20:00
Закрытая тема Создать тему
Опции темы

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