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

a=*b Что это значит? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
26.01.2013, 15:58     a=*b Что это значит? #1
Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 15:58     a=*b Что это значит?
Посмотрите здесь:

C++ что это значит?
что значит !a и a%=(c+10) и как это записать? C++
C++ Что значит это условие
Что значит это строка кода? C++
Что это значит? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
26.01.2013, 16:06     a=*b Что это значит? #2
Тут два оператора.
C++
1
a = (*b)
В a записывается то, что по адресу b. (Если не считать перегрузку операторов.)
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
26.01.2013, 16:06     a=*b Что это значит? #3
присвоение к переменной 'a' значение адреса переменной 'b'
HighPredator
 Аватар для HighPredator
5346 / 1729 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
26.01.2013, 16:08     a=*b Что это значит? #4
Afflicted, вы спутали с a*=b.
Evg
26.01.2013, 16:16
  #5

Не по теме:

Цитата Сообщение от HighPredator Посмотреть сообщение
Afflicted, вы спутали с a*=b.
Вообще-то он спутал с "a = &b"

Somebody
26.01.2013, 16:21
  #6

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение

Не по теме:

Вообще-то он спутал с "a = &b"

Судя по времени редактирования того поста, с чем только уже не успел спутать...

Evg
26.01.2013, 16:22
  #7

Не по теме:

Цитата Сообщение от Somebody Посмотреть сообщение
Судя по времени редактирования того поста, с чем только уже не успел спутать...
Едрить...

Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
26.01.2013, 16:23  [ТС]     a=*b Что это значит? #8
Я ничего не путаю. Просто пытаюсь разобраться в коде:
C++
1
2
3
4
5
        if (i < j) {
            p1 = Buffer+i; p2 = Buffer+j;
            temp = *p1; *(p1++) = *p2;
            *(p2++) = temp; temp = *p1;
            *p1 = *p2; *p2 = temp;
Помогите разобраться!
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 16:54     a=*b Что это значит? #9

Не по теме:

Dimmak, это...магия



Добавлено через 1 минуту
К примеру, зачем писать вот так:
*(p1++) = *p2;
я не понимаю
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.01.2013, 16:54     a=*b Что это значит? #10
он обменивает пары элементов массива Buffer
Элементы с индексами i и i+1 ставит на места с индексами j и j+1 соответственно и наоборот.
возможно, код был бы понятнее, еслиб не заставляли меня вспоминать, что возвращает оператор постинкремента, а тупо написали бы
C++
1
2
3
4
5
if (i < j) {
            p1 = Buffer+i; p2 = Buffer+j;
            temp = *p1; *p1= *p2; p1++;
            *p2 = temp; temp = *p1; p2++;
            *p1 = *p2; *p2 = temp;
А ещё лучше
C++
1
2
3
4
5
6
7
if (i < j) {
            temp = Buffer[i]; 
            Buffer[i]= Buffer[j]; 
            Buffer[j] = temp; 
            temp = Buffer[i+1]; 
            Buffer[i+1]= Buffer[j+1]; 
            Buffer[j+1] = temp;
Или вообще
C++
1
2
3
if (i < j) {
            Swap(Buffer[i], Buffer[j]);
            Swap(Buffer[i+1], Buffer[j+1]);
Т.к. адресная арифметика здесь как телеге пятое колесо
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 16:57     a=*b Что это значит? #11
Kuzia domovenok, проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Я проверял на 2х разных компиляторах одно и то же выражение, оно выдавало разные результаты.
Kuzia domovenok
26.01.2013, 17:00
  #12

Не по теме:

ой-ой

Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
26.01.2013, 17:02     a=*b Что это значит? #13
Цитата Сообщение от Kgfq Посмотреть сообщение
проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Это не проблема инкрементов, а проблема их неправильного использования...
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 17:06     a=*b Что это значит? #14
Somebody, а как вы будете его правильно использовать, если компиляторы даже решить не могут как правильно?)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.01.2013, 17:40     a=*b Что это значит? #15
Цитата Сообщение от Kgfq Посмотреть сообщение
а как вы будете его правильно использовать, если компиляторы даже решить не могут как правильно?)
Во-первых, ставить скобки, расписывать в несколько действий. Во-вторых, Есть понятие "точка следования", и не нужно производить следующую операцию с переменной, пока не пройдена точка следования, чтоб не получать непредсказуемый результат.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 17:47     a=*b Что это значит? #16
Kuzia domovenok, а лучше и проще просто не использовать инкременты в сложных кусках
Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
27.01.2013, 01:22  [ТС]     a=*b Что это значит? #17
К примеру, зачем писать вот так:
*(p1++) = *p2;
я не понимаю
И я тоже, но дело в том, что это фрагмент кода оптимизированного FFT, и том куске кода, о котором я спрашиваю, происходит перестановка значений для последующей ( ускоренной ) обработки. Скачивал исходник с оф.сайта...
Это единственная непонятная мне часть кода.

Добавлено через 7 часов 5 минут
Цитата Сообщение от Somebody Посмотреть сообщение
Тут два оператора.
C++
1
a = (*b)
В a записывается то, что по адресу b. (Если не считать перегрузку операторов.)
Дайте пожалуйста ссылку, где можно прочитать на тему 'a=*b'. Не совсем понятно...
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
27.01.2013, 02:06     a=*b Что это значит? #18
Цитата Сообщение от Dimmak Посмотреть сообщение
Дайте пожалуйста ссылку, где можно прочитать на тему 'a=*b'. Не совсем понятно...
http://ru.wikipedia.org/wiki/%D0%A3%...BD%D1%8B%D1%85)
n = *pn; /* Присвоить n то значение (5), на которое указывает pn. */
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
27.01.2013, 02:21     a=*b Что это значит? #19
Цитата Сообщение от Kgfq Посмотреть сообщение
Я проверял на 2х разных компиляторах одно и то же выражение,
уж не это ли
C++
1
a = a++;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2013, 09:52     a=*b Что это значит?
Еще ссылки по теме:

C++ что это значит?
C++ Что это значит if (x&1) ?
Не могу понять, что это значит: while(i<10/2) C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
27.01.2013, 09:52     a=*b Что это значит? #20
Цитата Сообщение от Kgfq Посмотреть сообщение
Kuzia domovenok, проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Я проверял на 2х разных компиляторах одно и то же выражение, оно выдавало разные результаты.
Пример в студию
Yandex
Объявления
27.01.2013, 09:52     a=*b Что это значит?
Ответ Создать тему
Опции темы

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