Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

Eul-

Программирование

Рекомендованные сообщения

Для ознакомления с программированием необязательно понимать указатели / ссылки, более того, это может быть даже вредно. На роль первого языка си, а уж тем более с++, не подходит, имхо.

 

например

Car toyota = new Car();

Car mazda;

 

mazda = toyota;

 

toyota.price = 50;

 

Вопрос mazda.price = ?

 

 

откуда он узнает ответ без знаний низкого уровня?

 

Касательно этого вопроса - в адекватных книжках почти в самом начале объясняется, что такое value type и reference type в с#, и твой вопрос не должен вызвать затруднений.

 

Поделиться сообщением


Ссылка на сообщение

Если бы начинал сейчас - сишарп заебись. В своё время начинал с паскаля.

какой нахуй си шарп. без с++ не юудет понятие как устроены указатели, и т.д

в сишарпе это все красиво зауваилировано, но скрытый смыысл надо знать

 

например

Car toyota = new Car();

Car mazda;

 

mazda = toyota;

 

toyota.price = 50;

 

Вопрос mazda.price = ?

 

 

откуда он узнает ответ без знаний низкого уровня?

в си шарп нет указателей

и да релультат может быть каким угодно. в си шарп есть как ссылочные типы, так и значимые


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

странно, что еще никто меня не поправил и не написал, что указатели всё-таки есть в c#


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

но нужны редко

Поделиться сообщением


Ссылка на сообщение

Если бы начинал сейчас - сишарп заебись. В своё время начинал с паскаля.

какой нахуй си шарп. без с++ не юудет понятие как устроены указатели, и т.д

в сишарпе это все красиво зауваилировано, но скрытый смыысл надо знать

 

например

Car toyota = new Car();

Car mazda;

 

mazda = toyota;

 

toyota.price = 50;

 

Вопрос mazda.price = ?

 

 

откуда он узнает ответ без знаний низкого уровня?

в си шарп нет указателей

и да релультат может быть каким угодно. в си шарп есть как ссылочные типы, так и значимые

так toyota и mazda  и есть указатели  trollface.gif

просто это не афишируется


ВСЁ КОРАБЛЬ,ВСЁ В АРТСТАЙЛА МИНУС АРТСТАЙЛ,КУРОНИТИ УБИРАЕТ АРТСТАЙЛА, ГОБЛИН УЛЬТУЕТ,ЗАБРАТЬ НАДО ХОТЬ КОГО-ТО,СТЕНКУ СТАВИТ,ОЙОЙОЙ КАКАЯ ХОРОШАЯ СТЕНА У ТОЛСТОЙ СКАТИНЫ,ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ НЕУБИВАЕТ НИКОГО,ФОБОС УЛЬТУЕТ НИКОГО НЕ ЗАБИРАЕТ ЗДЕСЬ КРИПЫ ЛОСТА ПЫТАЮТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТЖЕУБИВАЕТКУНКА!НА ТОРРЕНТ ОПЯТЬ ВСЕ,ВСЕ ЧЕТВЕРО ПОПАДАЮТ НА ТОРРЕНТ,ДЕНДИ УХОДИТ ПРОСТО С ТП,ЗАБИРАЮТ ЛОСТА, ЗАБИРАЮТ ФОБОСА,ЗАБИРАЮТ ГОБЛАКА,МОЖНО ЛИВАТЬ,ЭТО БЛЯТЬ НЕ ИГРА, ЭТО ПРОСТО ПОШЛИ ОНИ НАХУЙ БЛЯТЬ

Поделиться сообщением


Ссылка на сообщение

так toyota и mazda  и есть указатели  trollface.gif

просто это не афишируется

это не указатели, а объекты. и объект тойоты и мазды может храниться как в стеке - так и в куче.

как думаешь, зачем в c# всё-таки добавили указатели и засунули их в unsafe?


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

так toyota и mazda  и есть указатели  trollface.gif

просто это не афишируется

это не указатели, а объекты. и объект тойоты и мазды может храниться как в стеке - так и в куче.

как думаешь, зачем в c# всё-таки добавили указатели и засунули их в unsafe?

но здесь

mazda = toyota;

они ведут себя совсем как указатели, почему бы это?

 

скажем так, объект сам где-то в памяти, но указатели просто указывают на него.

а в с++ можно было обращяться напрямую к объектам через точку

mazda.action();

 

а через указатель

(*mazda).action();

или же

mazda->action();


ВСЁ КОРАБЛЬ,ВСЁ В АРТСТАЙЛА МИНУС АРТСТАЙЛ,КУРОНИТИ УБИРАЕТ АРТСТАЙЛА, ГОБЛИН УЛЬТУЕТ,ЗАБРАТЬ НАДО ХОТЬ КОГО-ТО,СТЕНКУ СТАВИТ,ОЙОЙОЙ КАКАЯ ХОРОШАЯ СТЕНА У ТОЛСТОЙ СКАТИНЫ,ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ НЕУБИВАЕТ НИКОГО,ФОБОС УЛЬТУЕТ НИКОГО НЕ ЗАБИРАЕТ ЗДЕСЬ КРИПЫ ЛОСТА ПЫТАЮТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТЖЕУБИВАЕТКУНКА!НА ТОРРЕНТ ОПЯТЬ ВСЕ,ВСЕ ЧЕТВЕРО ПОПАДАЮТ НА ТОРРЕНТ,ДЕНДИ УХОДИТ ПРОСТО С ТП,ЗАБИРАЮТ ЛОСТА, ЗАБИРАЮТ ФОБОСА,ЗАБИРАЮТ ГОБЛАКА,МОЖНО ЛИВАТЬ,ЭТО БЛЯТЬ НЕ ИГРА, ЭТО ПРОСТО ПОШЛИ ОНИ НАХУЙ БЛЯТЬ

Поделиться сообщением


Ссылка на сообщение

но здесь

mazda = toyota;

они ведут себя совсем как указатели, почему бы это?

 

скажем так, объект сам где-то в памяти, но указатели просто указывают на него.

а в с++ можно было обращяться напрямую к объектам через точку

mazda.action();

 

а через указатель

(*mazda).action();

или же

mazda->action();

еще раз повторюсь. здесь мазда может быть как значимым - так и ссылочным. и да ссылка и указатель - это не одно и то же

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

странно, что еще никто меня не поправил и не написал, что указатели всё-таки есть в c#

я писал об этом выше  :smile:


http://ru.iccup.com/dota/details/1295953.html

 

ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ

СВЕН ТП

СВЕН ПУШИТ

СВЕН ХЕКС

СВЕН ДАБЛКИЛЛ

СВЕН 7ОО КРИПОВ

Поделиться сообщением


Ссылка на сообщение

странно, что еще никто меня не поправил и не написал, что указатели всё-таки есть в c#

я писал об этом выше  :smile:

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

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

Гыгы, не, я понял, что он имел в виду. Он имел в виду вариант, когда Car- reference type - тогда работа с переменными по сути напоминает работу с указателями в Си. Офк если Car- value type, то структура будет скопирована целиком при присваивании.

 

Бтв ссылки в С++ и C# по сути разные, если в С++ ссылка константна (после инициализации уже не может быть переназначена на другой объект), то в C# - нет. Поэтому сишарповая ссылка это скорее указатель, не требующий разыменования. А в С++ ссылка - это то же плюс еще и атрибут константности.


http://ru.iccup.com/dota/details/1295953.html

 

ИДИТЕ НАХУЙ С ТАКМИ ГОНДАРАМИ

СВЕН ТП

СВЕН ПУШИТ

СВЕН ХЕКС

СВЕН ДАБЛКИЛЛ

СВЕН 7ОО КРИПОВ

Поделиться сообщением


Ссылка на сообщение

кароче вы меня не поняли

ответ будет 50


ВСЁ КОРАБЛЬ,ВСЁ В АРТСТАЙЛА МИНУС АРТСТАЙЛ,КУРОНИТИ УБИРАЕТ АРТСТАЙЛА, ГОБЛИН УЛЬТУЕТ,ЗАБРАТЬ НАДО ХОТЬ КОГО-ТО,СТЕНКУ СТАВИТ,ОЙОЙОЙ КАКАЯ ХОРОШАЯ СТЕНА У ТОЛСТОЙ СКАТИНЫ,ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ НЕУБИВАЕТ НИКОГО,ФОБОС УЛЬТУЕТ НИКОГО НЕ ЗАБИРАЕТ ЗДЕСЬ КРИПЫ ЛОСТА ПЫТАЮТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТЖЕУБИВАЕТКУНКА!НА ТОРРЕНТ ОПЯТЬ ВСЕ,ВСЕ ЧЕТВЕРО ПОПАДАЮТ НА ТОРРЕНТ,ДЕНДИ УХОДИТ ПРОСТО С ТП,ЗАБИРАЮТ ЛОСТА, ЗАБИРАЮТ ФОБОСА,ЗАБИРАЮТ ГОБЛАКА,МОЖНО ЛИВАТЬ,ЭТО БЛЯТЬ НЕ ИГРА, ЭТО ПРОСТО ПОШЛИ ОНИ НАХУЙ БЛЯТЬ

Поделиться сообщением


Ссылка на сообщение

по-моему вообще ничего общего.


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

у нас на ЯП с++ учим.

3 семестра  :fie:

Поделиться сообщением


Ссылка на сообщение

по-моему вообще ничего общего.

ты про ответ?


ВСЁ КОРАБЛЬ,ВСЁ В АРТСТАЙЛА МИНУС АРТСТАЙЛ,КУРОНИТИ УБИРАЕТ АРТСТАЙЛА, ГОБЛИН УЛЬТУЕТ,ЗАБРАТЬ НАДО ХОТЬ КОГО-ТО,СТЕНКУ СТАВИТ,ОЙОЙОЙ КАКАЯ ХОРОШАЯ СТЕНА У ТОЛСТОЙ СКАТИНЫ,ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ НЕУБИВАЕТ НИКОГО,ФОБОС УЛЬТУЕТ НИКОГО НЕ ЗАБИРАЕТ ЗДЕСЬ КРИПЫ ЛОСТА ПЫТАЮТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТЖЕУБИВАЕТКУНКА!НА ТОРРЕНТ ОПЯТЬ ВСЕ,ВСЕ ЧЕТВЕРО ПОПАДАЮТ НА ТОРРЕНТ,ДЕНДИ УХОДИТ ПРОСТО С ТП,ЗАБИРАЮТ ЛОСТА, ЗАБИРАЮТ ФОБОСА,ЗАБИРАЮТ ГОБЛАКА,МОЖНО ЛИВАТЬ,ЭТО БЛЯТЬ НЕ ИГРА, ЭТО ПРОСТО ПОШЛИ ОНИ НАХУЙ БЛЯТЬ

Поделиться сообщением


Ссылка на сообщение

по-моему вообще ничего общего.

ты про ответ?

я про то, что указатели в с++ - это указатели в с# и работать с ними совсем не так, как с обыкновенными ссылочными типасми с си шарп

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

кароче вы меня не поняли

ответ будет 50

ответ будет ноль

 

            Car honda = new Car();
            Car toyota = honda;

            honda.Price = 50;
            Write(toyota.Price.ToString());

 

а знаешь почему?

потому что

    struct Car
    {
        public int Price;
    }

а если бы было

    class Car
    {
        public int Price;
    }

то ты был бы прав

 

учить С++/С для таких вещей НЕ ЕСТЬ обязательным

Поделиться сообщением


Ссылка на сообщение

Когда я учил C# то на тему Value и Reference писал такой вот код: (вообще у меня было два проекта, которые рассматривали проблему всесторонне, второй не могу найти.

 

Может быть будет кому-нибудь нужно.

 

 

 

class Program

    {

        static void Main(string[] args)

        {

           

            //Просто строка - ИСКЛЮЧЕНИЕ С#

            string e = "old";

            string f = e;

            Console.WriteLine(e + " | " + f);

            e = "new";

            //по логике указатель f должнен указывать на адрес в куче, по которому записана e, но это типо исключение

            Console.WriteLine(e + " | " + f);

            Console.WriteLine();

 

            /*

            * Просто Класс

            */

            ClassTest a = new ClassTest("old", 1);

            //новый объект ссылается на другой в куче.

            //Ссылается по адресу, потом происходит разыменование и получаем значение.

            //Эта операция по умолчанию происходит в C#, в C++ приходится разыменовывать

            //самостоятельно.

            ClassTest b = a;

            Console.WriteLine(a.getStr() + " " + a.getI() + " | " + b.getStr() + " " + b.getI());

           

            //в С++ пришлось бы с помощью указателя найти нужное поле

 

            a.setStr("new");

            a.setI(2);

 

            //Так как объект класса содержится в куче, то он является reference

            //и все поля и методы, которые являются Value (типо int32)

            Console.WriteLine(a.getStr() + " " + a.getI() +" | "+b.getStr() + " " + b.getI());

 

            Console.WriteLine();

 

            /*

            * Просто Структура

            */

            StructTest c = new StructTest("old", 1);

            StructTest d = c;

 

 

            Console.WriteLine(c.getStr() + " " + c.getI() + " | " + d.getStr() + " " + d.getI());

           

            //Тут указатели не нужны, так как в стеке идет обращение к единственному полю!

 

            c.setStr("new");

            c.setI(2);

 

            //Так как объект структруры содержится в в стеке, то он является value

            //и все поля и методы, которые являются Value (типо int32)

            Console.WriteLine(c.getStr() + " " + c.getI() + " | " + d.getStr() + " " + d.getI());

            Console.WriteLine();

 

            // Тут получается поверхностная копия - две структуры в стеке ссылаются на один адрес в куче

            //ICloneAble рассмотрю позже

            StructForRef g = new StructForRef("old", 1);

            StructForRef h = g;

            Console.WriteLine(g.fr.getRefStr() + " " + g.fr.getRefInt() + " | " + h.fr.getRefStr() + " " + h.fr.getRefInt());

 

            g.fr.refInt = 2;

            g.fr.refStr = "new";

            Console.WriteLine(g.fr.getRefStr() + " " + g.fr.getRefInt() + " | " + h.fr.getRefStr() + " " + h.fr.getRefInt());

            Console.ReadLine();

 

 

        }

    }

 

 

    //Ссылочный тип

    public class ClassTest

    {

        //reference - строка

        private string str;

        //value - int32

        private int i;

 

        public ClassTest(string str, int i)

        {

            this.i = i;

            this.str = str;

        }

 

        public int getI()

        {

            return this.i;

        }

 

        public string getStr()

        {

            return this.str;

        }

 

        public void setI(int i)

        {

            this.i = i;

        }

 

        public void setStr(string str)

        {

            this.str = str;

        }

 

    }

 

    struct StructTest

    {

        //reference - строка

      public string str;

        //value - int32

        public int i;

 

        public StructTest(string str, int i)

        {

            this.i = i;

            this.str = str;

        }

 

          public int getI()

          {

              return this.i;

          }

 

          public string getStr()

          {

              return this.str;

          }

 

          public void setI(int i)

          {

              this.i = i;

          }

 

          public void setStr(string str)

          {

              this.str = str;

          }

    }

 

    //А если переменная класса сожержится в структ?

    class ForRef

    {

        public string refStr;

        public int refInt;

 

        public ForRef(string refStr, int refInt)

        {

            this.refStr = refStr;

            this.refInt = refInt;

        }

 

        public string getRefStr()

        {

            return this.refStr;

        }

 

        public int getRefInt()

        {

            return this.refInt;

        }

 

    }

 

    struct StructForRef

    {

        //Надоела инкапсуляция :))

        public ForRef fr;

        public StructForRef(string StructStr, int StructInt)

        {

            fr = new ForRef(StructStr,StructInt);

 

        }

 

    }

 

 

Поделиться сообщением


Ссылка на сообщение

void

 

и правда слишком много void


javascript:void(0);

Поделиться сообщением


Ссылка на сообщение

вообще ужасный код, если честно. такое впечатление, что в c# нет свойств


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...