在我的书中,它指出指针是地址并且有一个数值。您可以将指针的值打印为cout < <(unsigned long)(p) 编写代码以比较p,p + 1,q和q + 1。解释结果,我不知道这本书要我怎么做,所以这里是我的。有谁知道如果我这样做是正确的指针值
int num = 20;
double dbl = 20.0;
int *p = #
double *q = &dbl;
cout << (unsigned long)(q) << endl;
q = q + 1;
cout << (unsigned long)(q) << endl;
cout << (unsigned long)(p) << endl;
p = p + 1 ;
cout << (unsigned long)(p) << endl;
虽然在大多数实现中,'unsigned long'和一个指针的大小是相同的,但如果它宣称您总是可以使用强制类型转换为'unsigned long'来打印指针,那么您的书是错误的。打印指针的正确方法是将其转换为void *'。 –
你在做这件事时有什么疑问? –
@JoachimPileborg'void *'强制转换甚至是必要的吗? –