Иногда полезно «кодировать» не указатель значения в указатель, например, когда вам нужно передать данные в pthreads аргумент потока (void*
).
В C ++ вы можете сделать это, взломав;Приведения в стиле C являются примером этой хакерской атаки, и на самом деле ваша программа работает как нужно :
#include <iostream>
using namespace std;
int main()
{
int *NumRecPrinted = NULL;
int no_of_records = 10;
NumRecPrinted = (int*)no_of_records;
cout << "NumRecPrinted!" << NumRecPrinted; // Output: 0xa (same as 10)
return 0;
}
Вам просто нужно понять, что 0xa
является шестнадцатеричным представлениемдесятичный 10
.
Однако, этот является взломом;вы не должны быть в состоянии конвертировать int
s в указатели, потому что в general это не имеет смысла.На самом деле, даже в случае pthreads гораздо логичнее передать указатель на некоторую структуру, которая инкапсулирует данные, которые вы хотите передать.
Итак, в основном ... "don"т».