Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача указателя в функцию по ссылке (С++)
 
 автор: Евгений Петров   (23.12.2005 в 19:17)   письмо автору
 
 

Снова проклятый С++ :))) Мне нужно передать в функцию переменную указатель. Как это сделать? Т.е.
void MyFunc(/* адрес указателя */)
{
  x = NULL;  
}

...

MyType * x;
MyFunct(/* адрес указателя x*/);

Заранее большое спасибо!

   
 
 автор: cheops   (23.12.2005 в 22:44)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 19:17)
 

А так и объявляйте
void MyFunc(MyType * x) 

  x = NULL;   


... 

MyType * x; 
MyFunct(x);

   
 
 автор: Евгений Петров   (23.12.2005 в 22:57)   письмо автору
 
   для: cheops   (23.12.2005 в 22:44)
 

Посмотрите сами после вызова функции MyFunct x != NULL, а надо чтоб был равен

   
 
 автор: Евгений Петров   (24.12.2005 в 00:16)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 22:57)
 

И ещё вопросик. Как создать массив ссылок на мой тип.

   
 
 автор: cheops   (24.12.2005 в 01:52)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 22:57)
 

А должно бы работать...

   
 
 автор: Евгений Петров   (24.12.2005 в 22:05)   письмо автору
 
   для: cheops   (24.12.2005 в 01:52)
 

Да все правильно, смотрите, мы создаем переменную указатель
MyType * x;
Создается переменная моего типа и указатель на неё.
Теперь передаем в фунцию ПЕРЕМЕННУЮ указатель и в результате в создается ещё одна переменная и указатель на неё, а надо передать в функцию адрес первого указателя, вот только как это сделать.....

   
 
 автор: cheops   (24.12.2005 в 22:12)   письмо автору
 
   для: Евгений Петров   (24.12.2005 в 22:05)
 

А... ну тогда, объявите двойной укзатель, а в качестве аргумента передавайте адрес указателя... но вообще без жёсткой необходимости в таком стиле лучше не программировать - ошибку совершить здесь раз плюнуть (особенно если вы до двойного и четверного указателя доберётесь :).
void MyFunc(MyType ** x) 

  *x = NULL;    


... 

MyType * x; 
MyFunct(&x);

   
 
 автор: Евгений Петров   (25.12.2005 в 01:44)   письмо автору
 
   для: cheops   (24.12.2005 в 22:12)
 

Мда. Ладно, как нибудь выкручусь. :)))) А как сделать массив ссылок на мой тип? :)

   
 
 автор: cheops   (25.12.2005 в 13:16)   письмо автору
 
   для: Евгений Петров   (25.12.2005 в 01:44)
 

Объявите двойной указатель или указатель на массив
MyType ** x;
MyType *x[];

Ведь в C и С++ как таковых массивов нет - это ссылки, символы [] введены для удобства чтобы смещение к указателю не прибавлять.

   
 
 автор: Евгений Петров   (25.12.2005 в 14:15)   письмо автору
 
   для: cheops   (25.12.2005 в 13:16)
 

Спасибо поробую

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования