【发布时间】:2014-06-12 13:19:50
【问题描述】:
我是编程新手,只是为了更好地理解书本课程中涵盖的概念而自行修补;但是,我找不到以下解释:在下面的代码中,为什么使用 (INT *) 返回的地址与使用 & 的地址不同?
char animal[20] = "doberman";
const char * cat = "tiger";
std::cout << "\nanimal: " << animal << std::endl;
std::cout<< "cat: " << cat << std::endl;
std::cout << "-----\n";
std::cout << "&animal: " << &animal << std::endl;
std::cout << "&cat: " << &cat << std::endl;
std::cout << "(int *) cat: " << (int *) cat << std::endl;
【问题讨论】:
-
因为
&和(int *)不是一回事;把问题转过来:你为什么希望他们给出相同的结果? -
使用
(int *)不会神奇地将你的变量变成一个地址... -
@OliCharlesworth 据我了解,它们是实现相同结果的不同方式。它们都将显示指针指向的位置。我一定是误解了课程内容。
-
@Joshua 不,
&cat给你的是指针的地址,而不是它指向的东西。
标签: c++ pointers c++11 memory-management