pointers- все статьи тега


Путает аргументы одиночного указателя и двойного указателя в вызовах функций

Я пытаюсь получить более глубокое понимание аргументов указателей в функциях для C. я написал тестовую программу, чтобы попытаться увидеть разницу между передачей одного указателя и двойного указателя на функцию, а затем изменить ее. У меня есть программа, которая имеет две функции. Первая функция modifyMe1 принимает единственный указатель в качестве аргумента и изменяет свойство a на 7. Вторая функция modifyMe2 принимает двойной указатель в качестве аргумента и изменяет свойство a на 7. I ож ...

Что именно хранят указатели? (С++)

Я знаю, что указатели хранят адрес значения, на которое они указывают, но если вы выводите значение указателя непосредственно на экран, вы получаете шестнадцатеричное число. Если число-это именно то, что хранит указатель, то при произнесении pA = pB; //both are pointers Вы копируете адрес. Тогда не будет ли больше накладных расходов на использование указателей при работе с очень маленькими элементами, такими как ints и bool s? ...

Где хранятся адреса указателей в языке Си?

Я изучаю C и в настоящее время изучаю указатели. Я понимаю принцип хранения адреса байта в памяти как переменной, что позволяет получить байт из памяти и записать его в адрес памяти. Однако я не понимаю, где хранится адрес указателя. Допустим, значение указателя (адрес байта в памяти) хранится где - то в памяти-как программа может знать, где хранится указатель? Разве для этого не нужен указатель? указатель, приводящий к бесконечным указателям для указателей для указателей... ? Обновить Фак ...

Почему TaskSpawn принимает ints вместо void*?

Для операционной системы vxWorks они предоставляют системную библиотеку для порождения задач: int taskSpawn ( char * name, /* name of new task (stored at pStackBase) */ int priority, /* priority of new task */ int options, /* task option word */ int stackSize, /* size (bytes) of stack needed plus name */ FUNCPTR entryPt, /* entry point of new task */ int arg1, /* 1st of 10 req'd task args to p ...

Передача параметра LPCTSTR вызову API из VBA в PTRSAFE и UNICODE безопасным способом

Я боролся с этим целую неделю. У меня возникли трудности при передаче строковых указателей на функцию DLL. Фон Мы только что начали миграцию в Office 2010 из Office 2003. Некоторые люди будут иметь Office 2003 только в течение следующих нескольких лет. Некоторые люди будут использовать Office 2010 64-разрядный (почему я не знаю - но это другая тема). Для меня-мне нужно сделать некоторый код, который будет работать на всех версиях. Я нашел ... эта функция появилась в интернете несколь ...

Преобразование указателя в массив в C++

Функция CreateFileMapping возвращает указатель на файл, сопоставленный с памятью, и я хочу рассматривать это сопоставление памяти как массив. Вот что я в основном хочу сделать: char Array[] = (char*) CreateFileMapping(...); За исключением того, что, по-видимому, я не могу просто взмахнуть руками и объявить, что указатель теперь является массивом. Ребята, у вас есть какие-нибудь идеи, как я могу это сделать? Я не хочу копировать значения, на которые указывает указатель, в массив, потому чт ...

Приведение указателя к массиву (int* to int[2])

Как мне привести или преобразовать int* в int[x]? В качестве примера я попытался привести указатель int* c = new int[x] к массиву int b[2] int b[2] = { 2, 3 }; int* c = new int[b[1]]; c[0] = b[0]; c[1] = b[1]; c[2] = a; Во-первых, я знаю, что я могу перебирать указатель и массив. Таким образом, преобразуйте указатель в массив с помощью операторов [] для индексации указателя и массива, назначая элементы указателя элементам массива по мере выполнения итерации (например. arr[i] = p[i]). Я хоч ...

Указатели в качестве ключей в карте на C++ в STL

У меня есть вопрос о том, как обрабатываются указатели на пользовательский объект при использовании в качестве ключей в карте. Более конкретно, если я определяю std::map< CustomClass*, int > foo; Будет ли работать реализация C++ по умолчанию для обработки этих указателей? Или мне нужно определить пользовательскую функцию компаратора для ее обработки? Вообще, хорошо ли использовать указатели на объекты в качестве ключей? ...

Как правильно вернуть не нулевой указатель

Я использую внешнюю библиотеку C в моей программе C++, и библиотека использует функцию обратного вызова, которая должна возвращать void*. Библиотека проверяет, не является ли возвращаемое значение NULL, что означает успех. Итак, что является лучшим способом, чтобы сказать ему, что все нормально? Я использую: return reinterpret_cast<void*>(1); Но это выглядит уродливо... Edit: спасибо за ответ, я останусь с этим: static int success; return &success; ...

Удаление массива указателей

Выполняет ли delete[] a, где a-динамический выделенный массив указателей, delete для каждого указателя в массиве? Я предполагаю, что он выполняет деструктор для массивов с пользовательскими классами, но что происходит с указателями? ...

Когда следует использовать статическое литье, динамическое литье, const cast и reinterpret cast?

как правильно использовать: static_cast dynamic_cast const_cast reinterpret_cast C-style cast (type)value функция-стиль cast type(value) как решить, что использовать, в каких конкретных случаях? ...

Регулярное приведение против статического приведения против динамического приведения [дубликат]

этот вопрос уже есть ответ здесь: когда следует использовать static_cast, dynamic_cast, const_cast и reinterpret_cast? 7 ответов Я пишу код на C и C++ уже почти двадцать лет, но есть один аспект этих языков, который я никогда не понимал. Я, очевидно, использовал регулярные слепки то есть MyClass *m = (MyClass *)ptr; повсюду, но, похоже, есть два других типа бросков, и я не знаю разницы. В чем разница ...

В чем разница между константный инт*, константный тип int * const и int строительства *?

Я всегда путаю, как использовать const int*,const int * const и int const * правильно. Есть ли набор правил, определяющих, что вы можете и не можете сделать? Я хочу знать все do и все don'T с точки зрения заданий, перехода к функциям и т. д. ...

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

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

Когда использовать ссылки и указатели

Я понимаю синтаксис и общую семантику указателей по сравнению со ссылками, но как я должен решить, когда более или менее целесообразно использовать ссылки или указатели в API? Естественно, некоторые ситуации нуждаются в том или ином (operator++ нужен ссылочный аргумент), но в целом я нахожу, что предпочитаю использовать указатели (и указатели const), поскольку синтаксис ясен, что переменные передаются деструктивно. например, в следующем код: void add_one(int& n) { n += 1; } void add_one(i ...

В чем разница между NULL, ' ' и 0

В C, по-видимому, существуют различия между различными значениями нуля -- NULL,NUL и 0. я знаю, что символ ASCII '0' значение 48 или 0x30. The NULL указатель обычно определяется как: #define NULL 0 или #define NULL (void *)0 кроме того, есть NUL символ '' который, кажется, оценить 0 как хорошо. бывают ли случаи, когда эти три значения могут не быть равным? это также верно на 64-битных системах? ...

Когда я должен использовать новое ключевое слово в C++?

Я использую C++ в течение короткого времени, и мне было интересно о новая ключевое слово. Просто, я должен использовать его, или нет? 1) с новая ключевое слово... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2) Без новая ключевое слово... MyClass myClass; myClass.MyField = "Hello world!"; С точки зрения реализации, они не кажутся такими разными (но я уверен, что они есть)... Однако мой основной язык-C#, и, конечно же, 1-й метод-это то, что я использую к. сложно ...

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

в чем разница между: char * const и const char * ...

Как передать объекты в функции в C++?

Я новичок в программировании на C++, но у меня есть опыт в Java. Мне нужно руководство о том, как передавать объекты в функции в C++. нужно ли передавать указатели, ссылки или значения без указателя и без ссылки? Я помню, что в Java нет таких проблем, так как мы передаем только переменную, которая содержит ссылку на объекты. было бы здорово, если бы вы могли объяснить, где использовать каждый из этих вариантов. ...

Какой указатель я использую, когда?

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