Два вопроса на языке C ++ - PullRequest
1 голос
/ 28 апреля 2011

Я изучаю язык C ++. Есть две концепции, которые я не могу понять:

  1. В чем разница между new и malloc?
  2. В чем разница между указателем и ссылкой?

Может кто-нибудь помочь?


В первоначальном названии вопроса и утверждении об обучении говорилось, что вопрос касается C, а не C ++. Но вопросы явно касаются C ++, а не C, потому что один из двух пунктов в каждом вопросе не существует как соответствующая концепция в C.

Ответы [ 3 ]

13 голосов
/ 28 апреля 2011

C - это не C ++.

new - это способ выделения памяти и конструкторам вызовов в C ++.malloc просто выделяет память как на C, так и на C ++.

Указатель может иметь значение NULL - то есть указывать на недопустимое местоположение.Ссылка (которая не существует в C) всегда будет ссылаться на что-то - она ​​не может юридически ссылаться на неверное местоположение.

3 голосов
/ 28 апреля 2011

Я предполагаю, что вы спрашиваете о C ++, а не только о C.

  1. malloc() - самая распространенная функция выделения памяти;он выделяет как минимум столько байтов, сколько запрашивает пользователь.new является эксклюзивным для C ++ и является оператором, а не вызовом функции;он вызывает конструктор класса после выделения памяти.

  2. A указатель - это переменная, в которой хранится адрес памяти. ссылка является эксклюзивной для C ++;это абстракция, которая по сути выглядит так, как будто переменная была переименована.

0 голосов
/ 28 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...