BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Защо променлива и непроменлива сочат еднакъв адрес
Stilgar
Публикувано на: 09-09-2019, 00:37
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 12646
Регистриран на: 13.05.08



А за масива какво точно се изненадваш? Буквално са един и същ масив.


--------------------
Опитахме се да го направим както трябва, но стана както винаги.
PMEmail PosterUsers Website
Top
gat3way
Публикувано на: 09-09-2019, 00:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4179
Регистриран на: 22.06.12



Е аз F# и на подобни неща не знам как си организират нещата, човек ебе ли му майката къде се намират.
PMEmail Poster
Top
SuN
Публикувано на: 09-09-2019, 06:39
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9186
Регистриран на: 27.01.05



QUOTE (Stilgar @ 09-09-2019, 00:37)
А за масива какво точно се изненадваш? Буквално са един и същ масив.

Упражнението беше да ползвам async паралелно по спомен.

Трудната задача беше да попълня един квадрат случайно, докато числата в него не бяха уникални. Разбира се, като зацикли с единици при увеличение на задачите от 10*4 на 11*4, почнах да проверявам всичко, което си мислех, че знам.

Освен,че се научих да правя Array.copy, разбирах и за известният бъг на System.Random с връщане на нула (и дребният факт, че Майкрософт са преписали грешно едно число в алгоритъма за случайни числа от книгата на Кнут и отказват да го оправят).

Това мнение е било редактирано от SuN на 09-09-2019, 06:40


--------------------
Само аз не троля.
PMEmail Poster
Top
SuN
Публикувано на: 09-09-2019, 06:45
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9186
Регистриран на: 27.01.05



QUOTE (Stilgar @ 09-09-2019, 00:32)
В тоя случай дето е кода е особено идиотско защото оригиналните променливи са int и са на стека. С тоя referenceequals форсираш boxing и (вероятно някакъв pool), който на практика никога не се случва в реална програма щото никога не присвояваш int на object.

Ок, ще проверя, но мислех, че масива не е от примитивните типове като int. Пък и в документацията пишеше за два случая, в които ще върне грешен резултат, но единия беше за int, а другия май беше за "intern" низове.

Има ли нещо друго, което да препоръчаш за сравняване на адресите на соченото от две променливи?

П. П.
В случая думата pool = heap ли е?

Това мнение е било редактирано от SuN на 09-09-2019, 07:02


--------------------
Само аз не троля.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-09-2019, 07:06
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2780
Регистриран на: 21.02.18



QUOTE
В случая думата pool = heap ли е?
Не, това е стратегия за заблуда на "бесни джунки"


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 09-09-2019, 07:24
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9186
Регистриран на: 27.01.05



QUOTE (Stilgar @ 09-09-2019, 00:37)
А за масива какво точно се изненадваш? Буквално са един и същ масив.

Бендере, да не се засегна, че избрах fsharp за помощен език вместо java/Rust? Само една бесна джунка може да се интересува от такива въпроси. icon_cool.gif



--------------------
Само аз не троля.
PMEmail Poster
Top
Stilgar
Публикувано на: 09-09-2019, 10:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 12646
Регистриран на: 13.05.08



Точно това на което се дивиш в момента е същото в C#, Java, JavaScript и сигурно във всеки популярен език освен може би в C++ където има указатели и референции. Масивът е референтен тип, стои на heap–а като присвояваш на променлива присвояваш указател и затова двете ти променливи сочат към един и същи обект.


--------------------
Опитахме се да го направим както трябва, но стана както винаги.
PMEmail PosterUsers Website
Top
JanBirdX
Публикувано на: 09-09-2019, 20:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1633
Регистриран на: 21.02.05



QUOTE (Stilgar @ 09-09-2019, 10:02)
Точно това на което се дивиш в момента е същото в C#, Java, JavaScript и сигурно във всеки популярен език освен може би в C++ където има указатели и референции. Масивът е референтен тип, стои на heap–а като присвояваш на променлива присвояваш указател и затова двете ти променливи сочат към един и същи обект.

а в ПХП-то не е така и в свифт не е така
PMEmail Poster
Top
SuN
Публикувано на: 09-09-2019, 20:42
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9186
Регистриран на: 27.01.05



Абе малко изненадващо е, че нещата от ниско ниво в .нет така изтичат на високо ниво в езика. Днес четох и наистина беше споменато за референтните типове, но само набързо и че информацията ще е добре известна на Ц# програмистите. Ама и аз за първи път работех по този начин с масиви (и то с нишки да пробвам async) и ме хвана неподготвен, това, че изглеждаше да работи правилно в началото.

Иначе и в perl не е така, а в Емакс лисп е така. Там даже може деструктивно да манипулираш указателите на списъците подадени като аргументи със setcar и setcdr. icon_smile.gif

Това мнение е било редактирано от SuN на 09-09-2019, 20:44


--------------------
Само аз не троля.
PMEmail Poster
Top
40oz
Публикувано на: 09-09-2019, 21:21
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 309
Регистриран на: 23.05.13



QUOTE (Stilgar @ 09-09-2019, 10:02)
Точно това на което се дивиш в момента е същото в C#, Java, JavaScript и сигурно във всеки популярен език освен може би в C++ където има указатели и референции. Масивът е референтен тип, стои на heap–а като присвояваш на променлива присвояваш указател и затова двете ти променливи сочат към един и същи обект.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0