BG Development


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

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



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

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



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


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



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

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



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


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

Мнения: 9447
Регистриран на: 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
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9447
Регистриран на: 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



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

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



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


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 09-09-2019, 07:24
Quote Post


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

Мнения: 9447
Регистриран на: 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



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

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



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


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



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

Мнения: 1648
Регистриран на: 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
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9447
Регистриран на: 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



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

Мнения: 332
Регистриран на: 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