Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
#1

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

26.01.2013, 15:58. Просмотров 1769. Ответов 30
Метки нет (Все метки)

Подскажите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 15:58
Ответы с готовыми решениями:

что это значит?
в задании есть такой фрагмент if(!(num%div)) что это означает?

Что это значит?
Что значит условие (!a)?В каком случае будет выполняться правда? if(!a) {...

Что это значит?
Скажите, пожалуйста, что значит эта строка?

что это значит?
Помогите, пожалуйста, разобраться в данном фрагменте программы) char*...

Что это значит if (x&1) ?
основным вопросом есть if (x&1) что это за условия? и что это? x>>1. какая...

30
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
26.01.2013, 16:06 #2
Тут два оператора.
C++
1
a = (*b)
В a записывается то, что по адресу b. (Если не считать перегрузку операторов.)
0
Afflicted
Обитатель форума
199 / 182 / 54
Регистрация: 28.10.2012
Сообщений: 543
26.01.2013, 16:06 #3
присвоение к переменной 'a' значение адреса переменной 'b'
0
HighPredator
5679 / 1998 / 721
Регистрация: 10.12.2010
Сообщений: 5,750
Записей в блоге: 3
26.01.2013, 16:08 #4
Afflicted, вы спутали с a*=b.
1
Evg
26.01.2013, 16:16
  #5

Не по теме:

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

0
Somebody
26.01.2013, 16:21
  #6

Не по теме:

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

Не по теме:

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

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

2
Evg
26.01.2013, 16:22
  #7

Не по теме:

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

0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
26.01.2013, 16:23  [ТС] #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;
Помогите разобраться!
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 16:54 #9

Не по теме:

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



Добавлено через 1 минуту
К примеру, зачем писать вот так:
*(p1++) = *p2;
я не понимаю
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,177
Записей в блоге: 1
26.01.2013, 16:54 #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]);
Т.к. адресная арифметика здесь как телеге пятое колесо
1
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 16:57 #11
Kuzia domovenok, проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Я проверял на 2х разных компиляторах одно и то же выражение, оно выдавало разные результаты.
0
Kuzia domovenok
26.01.2013, 17:00
  #12

Не по теме:

ой-ой

0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
26.01.2013, 17:02 #13
Цитата Сообщение от Kgfq Посмотреть сообщение
проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Это не проблема инкрементов, а проблема их неправильного использования...
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 17:06 #14
Somebody, а как вы будете его правильно использовать, если компиляторы даже решить не могут как правильно?)
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,177
Записей в блоге: 1
26.01.2013, 17:40 #15
Цитата Сообщение от Kgfq Посмотреть сообщение
а как вы будете его правильно использовать, если компиляторы даже решить не могут как правильно?)
Во-первых, ставить скобки, расписывать в несколько действий. Во-вторых, Есть понятие "точка следования", и не нужно производить следующую операцию с переменной, пока не пройдена точка следования, чтоб не получать непредсказуемый результат.
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
26.01.2013, 17:47 #16
Kuzia domovenok, а лучше и проще просто не использовать инкременты в сложных кусках
0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
27.01.2013, 01:22  [ТС] #17
К примеру, зачем писать вот так:
*(p1++) = *p2;
я не понимаю
И я тоже, но дело в том, что это фрагмент кода оптимизированного FFT, и том куске кода, о котором я спрашиваю, происходит перестановка значений для последующей ( ускоренной ) обработки. Скачивал исходник с оф.сайта...
Это единственная непонятная мне часть кода.

Добавлено через 7 часов 5 минут
Цитата Сообщение от Somebody Посмотреть сообщение
Тут два оператора.
C++
1
a = (*b)
В a записывается то, что по адресу b. (Если не считать перегрузку операторов.)
Дайте пожалуйста ссылку, где можно прочитать на тему 'a=*b'. Не совсем понятно...
0
DaskOFF
112 / 112 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
27.01.2013, 02:06 #18
Цитата Сообщение от Dimmak Посмотреть сообщение
Дайте пожалуйста ссылку, где можно прочитать на тему 'a=*b'. Не совсем понятно...
http://ru.wikipedia.org/wiki/%D0%A3%...BD%D1%8B%D1%85)
n = *pn; /* Присвоить n то значение (5), на которое указывает pn. */
1
ValeryS
Модератор
7219 / 5482 / 682
Регистрация: 14.02.2011
Сообщений: 18,542
27.01.2013, 02:21 #19
Цитата Сообщение от Kgfq Посмотреть сообщение
Я проверял на 2х разных компиляторах одно и то же выражение,
уж не это ли
C++
1
a = a++;
0
Evg
Эксперт CАвтор FAQ
19279 / 7136 / 528
Регистрация: 30.03.2009
Сообщений: 19,979
Записей в блоге: 30
27.01.2013, 09:52 #20
Цитата Сообщение от Kgfq Посмотреть сообщение
Kuzia domovenok, проблема инкрементов в том, что разные компиляторы воспринимают их немного по-разному.
Я проверял на 2х разных компиляторах одно и то же выражение, оно выдавало разные результаты.
Пример в студию
0
27.01.2013, 09:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2013, 09:52

Что значит это условие
Вот собственно код: if ( ( words = (char**)realloc(words, sizeof(char*) * (cnt...

Не могу понять, что это значит: while(i<10/2)
/*обращение массива*/ #include &lt;stdio.h&gt; main() { int p,i=0; static...

Что значит это строка кода?
int _tmain(int argc, _TCHAR* argv) Объясните пожалуйста что значит этот...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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