Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2015, 10:23   #1
Landgraf132
 
Регистрация: 14.09.2015
Сообщений: 5
По умолчанию Задача с указателями.

Есть задача на Delphi, но выполнять её нужно на C#. Вот её текст:
Цитата:
Написать и отладить программу, в которой описывается запись:

TBaseType = record
x: integer;
y: real;
end;

Определить указатель PBaseType на запись TBaseType. Определить переменную BaseType типа TBaseType и переменную V1 типа PBaseType. С помощью конструк*ции @*сделать ее указателем на переменную BaseType. Вывести на монитор с помощью оператора Writeln поля x, y разыменованной переменной V1.
Определить переменную V2 типа PBaseType. С помощью функции NEW инициализировать ее и задать значения полей.
Удалить из динамической памяти переменную V2 с помощью функции DISPOSE.
Я её пытаюсь решить вот так:

Код:
namespace lol
{
	class TBasePoint
	{
		public int x;
		public int y;
		public TBasePoint(int a, int b)
		{
			x = a;
			y = b;
		}
	}


}

namespace ConsoleApplication1
{
	using lol;
	using PBaseType=lol.TBasePoint ;

	class Program

	{




		static void Main(string[] args)
		{
			TBasePoint PBaseType = new  TBasePoint(5,6);
			TBasePoint BaseType;
			 
			unsafe{
				PBaseType* V1;
				V1 = BaseType;
			}
		 
		}
	}
}
На месте выделенным жирным шрифтом возникает ошибка - "невозможно получить адрес или объявить указатель для управляемого типа ("lol.TBasePoint").
Что я делаю не так?
Landgraf132 вне форума Ответить с цитированием
Старый 14.09.2015, 10:31   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы уверены, что вам нужны unsafe указатели? Нет никакого смысла так делать в C#, там и так классы являются reference типами, то есть в вашем коде PBaseType это ссылка, и BaseType тоже (только ей не присвоено никакого значения, объект как в С++ на этой строке не создается)
Код:
TBasePoint BaseType;
Если написать
Код:
BaseType = PBaseType
то у вас будут две ссылки на один объект, а не два объекта.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.09.2015 в 10:34.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2015, 10:49   #3
Landgraf132
 
Регистрация: 14.09.2015
Сообщений: 5
По умолчанию

Оу, спасибо. Что-то не подумал.
Landgraf132 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с указателями из книги Дейтелов Parazite Общие вопросы C/C++ 0 03.09.2013 19:53
Стек с указателями YTatyana Паскаль, Turbo Pascal, PascalABC.NET 3 02.05.2013 16:40
Задача по C++(динамический массив, работа с указателями) UJIN2013 Помощь студентам 0 23.12.2012 16:12
Задача на Паскале(возможно с указателями) pahann Помощь студентам 1 31.01.2011 15:51
Задача с УКАЗАТЕЛЯМИ, ПОМОГИТЕ РЕШИТЬ! RomT24 Помощь студентам 1 06.06.2009 15:15