Результаты поиска по запросу "pointers"
Присвоение включает в себя преобразование, как и при приведении (которое по определению является явным преобразованием), таким образом, это неопределенное поведение. Это может работать с некоторыми реализациями C, либо как расширение, либо случайно (например, из-за того же представления и отсутствия оптимизаций, которые нарушат код), но нет гарантии от стандарта C.
аюсь запустить следующую программу, но получаю странные ошибки: Файл 1.c: typedef unsigned long (*FN_GET_VAL)(void); FN_GET_VAL gfnPtr; void setCallback(const void *fnPointer) { gfnPtr = *((FN_GET_VAL*) (&fnPointer)); } Файл 2.c: extern ...
Указатель указывает на НАЧАЛО чего-то в памяти. INT занимает 4 байта (32 бита), а DOUBLE занимает 8 байтов (64 бита) в памяти. Таким образом, если у вас сохранено ДВОЙНОЕ число, и вы хотите на очень низком уровне, указывающем на следующую доступную ячейку памяти, указатель может быть увеличен на 8 байт. Если по какой-то причине вы указали +4 байта от начала значения DOUBLE, вы бы испортили его значение. Память - это очень большое плоское поле, которое не имеет совести само по себе, поэтому программное обеспечение должно правильно разделить его и «уважать границы» элементов, расположенных в этом поле.
ние указателя является адресом переменной. Почему ценностьint pointer увеличено на 4 байта после того, как указатель int увеличен на 1. На мой взгляд, я думаю, что значение указателя (адрес переменной) увеличивается только на 1 байт после ...
Почему удаление узла из двусвязного списка происходит быстрее, чем удаление узла из односвязного списка?
Мне было любопытно, почему удаление узла из двойного связанного списка происходит быстрее, чем одиночного связанного. Согласно моей лекции, для двойного связанного списка требуется O (1) по сравнению с O (n) для одного связанного списка. Согласно ...
будет работать. Тогда вы можете сравнить указатели, как вы сравниваете сейчас.
ел бы получить некоторую информацию о передовом опыте при сравнении указателей в таких случаях, как этот: class Base { }; class Derived : public Base { }; Derived* d = new Derived; Base* b = dynamic_cast<Base*>(d); // When comparing the two ...
Хорошая практика, но это не решит проблему.
учаю предупреждение warning: comparison between pointer and integer на строке, содержащейif из следующего куска кода: char cwd[1024]; if (getcwd(cwd, sizeof(cwd)) != (char*)NULL) printf("%s\n",cwd); else error_print("error in pwd");как и что ...
Это просто потому, что компилятор не может сказать, какой адрес будет. Вам не разрешается пытаться изменить это, хотя, как вы и обещали, оно должно быть постоянным. Это неопределенное поведение, как говорит Наваз. Все может случиться!
код имеет дело сTYPE* const указатель. struct D { void Check () { D* const p = new D; // 2nd test is "p = 0;" cout<<"p = "<<p<<endl; (D*&)p = new D; cout<<"p = "<<p<<endl; // prints 0, "p = 0;" at declaration } }; int main () { D o; o.Check(); ...
потому что вы не можете взять адрес gcroot. Если вы хотите, вы должны использовать GCHandle напрямую. Кроме того, во многих случаях не бойтесь использовать Obect ^ *, если базовый объект ^ находится в стеке. так вот: SomeFunction (& handle); и ввод должен быть приведен к ManagedClass ^ *
даю DLL-оболочку C ++ / CLI, которая зависит от многочисленных статических библиотек C ++. Некоторые вызовы функций ожидают передачи неуправляемых указателей. Как правильно передать их? Также другие функции ожидают, что этот указатель будет ...
Почему указатели не инициализируются с NULL по умолчанию?
Может кто-нибудь объяснить, почему указатели не инициализируютсяNULL? Пример: void test(){ char *buf; if (!buf) // whatever }Программа не будет вмешиваться, если потому чтоbuf не является нулевым Я хотел бы знать, почему, в каком случае нам ...
Общая форма new применительно к одномерным массивам выглядит следующим образом:
утался в том, как создать динамически определенный массив: int *array = new int[n];Я понятия не имею, что это делает. Я могу сказать, что это создает указатель с именем массив, который указывает на новый объект / массив int? Кто-нибудь захочет ...
Вместо этого используйте NSMapTable:
у меня есть указатель на объект foo с адресом (скажем) 0x809b5c0, я могу превратить его в строку NSString, вызвав NSString* fooString = [NSString stringWithFormat: @"%p", foo].Это даст мне NSString @ "0x809b5c0". Какой самый простой способ ...