Вопросы с тегом 'pointers'

Тип данных, который "указывает на" другое значение, хранящееся в памяти. Переменная указателя содержит адрес памяти другого объекта (переменной или функции или другого объекта). Этот тег должен использоваться для вопросов, связанных с использованием указателей, а не ссылок. Наиболее распространенными языками программирования с использованием указателей являются языки C, C++, Go и ассемблера. Используйте специальный тег языка. Другими полезными тегами являются метод, функция, структура и т.д., Описывающие использование указателя.
41

Каковы различия между переменной указателя и ссылочной переменной в С++?

Я знаю, что ссылки - это синтаксический сахар, поэтому код легче читать и писать. Но каковы различия? Резюме из ответов и ссылок ниже: Указатель может быть повторно назначен любым количеством раз, в то время как ссылка не может быть повторно назн...
11 сент. '08 в 20:03
8

Когда следует использовать static_cast, dynamic_cast, const_cast и reinterpret_cast?

Какое правильное использование: static_cast dynamic_cast const_cast reinterpret_cast C-стиль (type)value Литье в стиле функции type(value) Как вы решаете, что использовать в каких случаях?
01 дек. '08 в 20:11
14

Что такое умный указатель, и когда я должен его использовать?

Что такое умный указатель и когда я должен его использовать?
20 сент. '08 в 0:09
8

Регулярное литье против static_cast vs. dynamic_cast

Я пишу код C и С++ почти двадцать лет, но есть один аспект этих языков, которые я никогда не понимал. Я, очевидно, использовал регулярные роли, т.е. MyClass *m = (MyClass *)ptr; повсюду, но, похоже, есть два других типа бросков, и я не знаю разниц...
26 авг. '08 в 13:20
19

С массивами, почему это так, [5] == 5 [a]?

Как указывает Джоэл в подкасте № 34 "Переполнение стека" в языке программирования C (он же K & R), в C упоминается это свойство массивов: a[5] == 5[a] Джоэл говорит, что это из-за арифметики указателей, но я до сих пор не понимаю. Почему a[5] =...
19 дек. '08 в 17:01
23

Почему я должен использовать указатель, а не сам объект?

Я исхожу из фона Java и начал работать с объектами на С++. Но мне пришло в голову то, что люди часто используют указатели на объекты, а не сами объекты, например это объявление: Object *myObject = new Object; а не: Object myObject; Или вместо ...
03 мар. '14 в 11:54
17

В чем разница между const int *, const int * const и int const *?

Я всегда испортил, как правильно использовать const int*, const int * const и int const *. Существует ли набор правил, определяющих, что вы можете и чего не можете сделать? Я хочу знать все, что нужно делать, и все это не касается присвоений, перед...
17 июл. '09 в 13:28
12

Что такое nullptr?

Теперь у нас есть С++ 11 со многими новыми функциями. Интересным и запутанным (по крайней мере для меня) является новый nullptr. Ну, больше не нужно для неприятного макроса NULL. int* x = nullptr; myclass* obj = nullptr; Тем не менее, я не пони...
15 авг. '09 в 16:47
28

Каковы препятствия для понимания указателей и что можно сделать для их преодоления?

Почему указатели являются ведущим фактором путаницы для многих новых и даже старых студентов на уровне колледжа на C или С++? Существуют ли какие-либо инструменты или мыслительные процессы, которые помогли вам понять, как указатели работают с перемен...
08 авг. '08 в 6:17
5

Как использовать массивы на С++?

С++ унаследованные массивы из C, где они используются практически везде. С++ предоставляет абстракции, которые легче использовать и менее подвержены ошибкам (std::vector<T>с С++ 98 и std::array<T, n>, поскольку C++11), поэтому необходимос...
26 янв. '11 в 22:14
5

Как передать функцию в качестве параметра в C?

Я хочу создать функцию, которая выполняет функцию, переданную параметром в наборе данных. Как передать функцию в качестве параметра в C?
13 авг. '08 в 2:16
11

C указатель на массив/массив значений указателей

В чем разница между следующими объявлениями: int* arr1[8]; int (*arr2)[8]; int *(arr3[8]); Каково общее правило для понимания более сложных объявлений?
13 мая '09 в 18:35
14

Сколько уровней указателей у нас есть?

Сколько указателей (*) разрешено в одной переменной? Рассмотрим следующий пример. int a = 10; int *p = &a; Аналогично мы можем иметь int **q = &p; int ***r = &q; и т.д. Например, int ****************zz;
10 апр. '12 в 10:34
6

Что означает "разыменование" указателя?

Пожалуйста, укажите пример с объяснением.
10 февр. '11 в 9:16
6

Указатель функции Typedef?

Я учусь, как динамически загружать DLL, но я не понимаю, что это за строка typedef void (*FunctionFunc)(); У меня есть несколько вопросов. Если кто-то сможет ответить на них, я был бы благодарен. Почему используется typedef? Синтаксис выглядит с...
28 нояб. '10 в 4:50