Вопросы с тегом «pointers»

237
Понимание typedefs для указателей на функции в C

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

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

Итак, в прошлый раз, когда я писал на С ++, std::auto_ptrвсе, что было доступно в std lib, boost::shared_ptrбыло в ярости. Я действительно никогда не смотрел на другие типы улучшенных умных указателей. Я понимаю, что C ++ 11 теперь предоставляет некоторые из типов boost, но не все. Так есть ли у...

225
Есть ли преимущества передачи по указателю перед передачей по ссылке в C ++?

Каковы преимущества передачи по указателю перед передачей по ссылке в C ++? В последнее время я видел ряд примеров, в которых аргументы функции передаются по указателям, а не по ссылке. Есть ли преимущества для этого? Пример: func(SPRITE *x); с вызовом func(&mySprite); против func(SPRITE...

220
умные указатели (повышение) объяснил

В чем разница между следующим набором указателей? Когда вы используете каждый указатель в рабочем коде, если вообще? Примеры будут оценены! scoped_ptr shared_ptr weak_ptr intrusive_ptr Вы используете повышение в производственном...

216
В чем разница между массивом char и указателем в C?

Я пытаюсь понять указатели в C, но я в настоящее время путаю со следующим: char *p = "hello" Это указатель на символ, указывающий на массив символов, начиная с h . char p[] = "hello" Это массив, который хранит привет . Какая разница, когда я передаю обе эти переменные в эту функцию? void...

216
Почему определения указателей на функции работают с любым количеством амперсандов '&' или звездочек '*'?

Почему следующие работы? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo;...

212
Возвращаем массив в функцию

У меня есть массив, int arr[5]который передается в функцию fillarr(int arr[]): int fillarr(int arr[]) { for(...); return arr; } Как я могу вернуть этот массив? Как я буду использовать его, скажем, я вернул указатель, как я собираюсь получить к нему доступ?...

210
Передача лямбда-захвата в качестве указателя на функцию

Можно ли передать лямбда-функцию в качестве указателя на функцию? Если это так, я должен что-то делать неправильно, потому что я получаю ошибку компиляции. Рассмотрим следующий пример using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn...

206
Что такое указатель C, если не адрес памяти?

В авторитетном источнике о C, после обсуждения &оператора дается следующая информация : ... Немного прискорбно, что терминология [адрес] остается, потому что она сбивает с толку тех, кто не знает, о чем идет речь, и вводит в заблуждение тех, кто это делает: думать о указателях так, как будто...

204
Проходя по ссылке в С

Если C не поддерживает передачу переменной по ссылке, почему это работает? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } Вывод: $ gcc -std=c99 test.c $ a.exe i = 21...

201
X не реализует Y (... у метода есть указатель получателя) [закрыто]

Закрыто . Этот вопрос нуждается в деталях или ясности . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Добавьте детали и проясните проблему, отредактировав этот пост . Закрыто 4 месяца назад . Улучшить этот вопрос Уже есть несколько вопросов и ответов по этому вопросу « X...

194
Правильный ли спецификатор формата для печати указателя или адреса?

Какой спецификатор формата мне следует использовать для вывода адреса переменной? Я запутался между нижеуказанным лотом. % u - целое число без знака % x - шестнадцатеричное значение % p - пустой указатель Какой формат будет оптимальным для печати...

193
RAII и умные указатели в C ++

На практике с C ++, что такое RAII , что такое интеллектуальные указатели , как они реализованы в программе и каковы преимущества использования RAII с интеллектуальными...

189
Почему адрес массива равен его значению в C?

В следующем фрагменте кода значения указателя и адреса указателя отличаются, как и ожидалось. Но значения массива и адреса не имеют! Как это может быть? Вывод my_array = 0022FF00 &my_array = 0022FF00 pointer_to_array = 0022FF00 &pointer_to_array = 0022FEFC #include <stdio.h> int...

188
С не так сложно: void (* (* f []) ()) ()

Я только сегодня увидел фотографию и думаю, что буду благодарен за объяснения. Итак, вот картинка: Я нашел это смущающим и задавался вопросом, практичны ли когда-либо такие коды. Я гуглил картинку и нашел другую картинку в этой записи Reddit, и вот эта картинка: Так что это «чтение по спирали»...

187
Почему звездочка перед именем переменной, а не после типа?

Почему большинство программистов на C называют переменные так: int *myVariable; а не так: int* myVariable; Оба действительны. Мне кажется, что звездочка является частью типа, а не частью имени переменной. Кто-нибудь может объяснить эту...