Форум программистов, компьютерный форум 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]и т.п.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.11.2011, 16:01     Как использовать указатели при работе с массивами? #61
Цитата Сообщение от Bers Посмотреть сообщение
Как? "так" ?
Твердое, мягкое, твердое.
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну твёрдости присвоить "мягко" - не фокус. Плюсы же позволяют твёрдости присвоить зелень, а температуре - алмаз. Причём, автор мнимых граблей полиморфизма и все, кто в эти грабли поверил, будут в обоих случаях юзить преобразование запаха в химическую формулу, что в корне не верно, но язык то в том не виноват.
Вы ошиблись, Вам в литературный раздел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 являлись "тяжелыми" объектами, то...

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

И кстати...

Не по теме:

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

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

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

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

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

Не по теме:

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

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

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

Не по теме:

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

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

Просто я для вашей исходной фразы использовал сначала подстрочник: если нельзя, но очень хочется, то можно!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 17:44     Как использовать указатели при работе с массивами? #72
я вас разочарую, всякие там "переменные" или "объекты" существуют лишь в теории на приктике же есть память и ее адрес и всьо.
Bers
Заблокирован
30.11.2011, 17:47     Как использовать указатели при работе с массивами? #73
Цитата Сообщение от alkagolik Посмотреть сообщение
я вас разочарую, всякие там "переменные" или "объекты" существуют лишь в теории на приктике же есть память и ее адрес и всьо.
Я вас тоже разочарую. Всякие там "памяти" и "адреса" существуют лишь в теории. На практике же есть только электрический ток в микросхемах: есть сигнал, нет сигнала.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 20:00     Как использовать указатели при работе с массивами? #74
Цитата Сообщение от Bers Посмотреть сообщение
Я вас тоже разочарую. Всякие там "памяти" и "адреса" существуют лишь в теории. На практике же есть только электрический ток в микросхемах: есть сигнал, нет сигнала.
"Память" есть, запоминающее устройство. Простейшее одноразрядное зу - триггер. И даже способов построить зу есть несколько, отсюда и разные типы зу и разный тип доступа к адресам зу, и адреса - двоичные векторы, хранящиеся в зу. 8 триггеров = 8 разрядный регистр, который и относится к зу, потому как единственным его назначением является хранение данных в двоичном виде.
Bers
Заблокирован
30.11.2011, 20:00     Как использовать указатели при работе с массивами? #75
Цитата Сообщение от alkagolik Посмотреть сообщение
"Память" есть, запоминающее устройство. Простейшее одноразрядное зу - триггер. И даже способов построить зу есть несколько, отсюда и разные типы зу и разный тип доступа к адресам зу, и адреса - двоичные векторы, хранящиеся в зу. 8 триггеров = 8 разрядный регистр, который и относится к зу, потому как единственным его назначением является хранение данных в двоичном виде.
какое это имеет отношение к теме?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 20:04     Как использовать указатели при работе с массивами? #76
Цитата Сообщение от Bers Посмотреть сообщение
какое это имеет отношение к теме?
а темы уже давно нет, вам уже стопицот раз показали что никаких явных или неявных указателей не бывает. Есть указатель и точка, он имеет свойства, признаки, но не виды (явный, неявный).
Bers
Заблокирован
30.11.2011, 20:14     Как использовать указатели при работе с массивами? #77
Цитата Сообщение от alkagolik Посмотреть сообщение
а темы уже давно нет, вам уже стопицот раз показали что никаких явных или неявных указателей не бывает. Есть указатель и точка, он имеет свойства, признаки, но не виды (явный, неявный).
Если б ты поменьше философствовал о всяких триггерах ЗУ, и больше уделял внимание русскому тексту, то ты бы заметил, что человек который сказал:

Цитата Сообщение от Bers Посмотреть сообщение
Да причем тут терминология вообще? Указатель, который создаётся неявно - это блин, неявный указатель. Указатель, который создаётся явно - явный.
или вот это:

Цитата Сообщение от Bers Посмотреть сообщение
Явный указатель, или неявный указатель - это не термины, это описания указателей)
Был я сам. С теперь сравни с собственным творчеством:

Цитата Сообщение от alkagolik Посмотреть сообщение
Есть указатель и точка, он имеет свойства, признаки, но не виды (явный, неявный).
Если до тебя ещё что-то не допирает, то подозреваю, что у тебя просто проблемы с восприятием русского текста. Потому что ты сейчас говоришь мне тоже самое, что я сам сказал вам всем несколькими страничками ранее.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.11.2011, 20:27     Как использовать указатели при работе с массивами? #78
суров. Не кипятись, колонки распирает от крика.
Гоблин
 Аватар для Гоблин
1 / 1 / 0
Регистрация: 17.10.2010
Сообщений: 29
01.12.2011, 11:43     Как использовать указатели при работе с массивами? #79
а темы уже давно нет, вам уже стопицот раз показали что никаких явных или неявных указателей не бывает. Есть указатель и точка, он имеет свойства, признаки, но не виды (явный, неявный).
Только что в универе подходил к преподавателю С++. Явный и неявный действительно условные названия, однако ими почему-то все пользуются. Ну, возможно, кроме тех, кто знает все стандарты наизусть

C++
1
2
3
4
5
6
7
8
9
10
void f1(int *A, int *s)  {
 ...
 *s = A[1];
... 
}
 
void main() {
  ...
  f1(A, s);
}
C++
1
2
3
4
5
6
7
8
9
10
void f2(int *A, int &s) {
  ...
  s = A[1];
  ...
}
 
void main() {
  ...
  f2(A, s);
}
Найдите отличия) Во втором случае как раз и происходит неявное разыменование, то есть s - то, что простые смертные называют неявным или скрытым указателем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 11:47     Как использовать указатели при работе с массивами?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
01.12.2011, 11:47     Как использовать указатели при работе с массивами? #80
Цитата Сообщение от Гоблин Посмотреть сообщение
то есть s
это ссылка)
Yandex
Объявления
01.12.2011, 11:47     Как использовать указатели при работе с массивами?
Закрытая тема Создать тему
Опции темы

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