我正在编写一个使用指针的小程序,并遇到了奇怪的编译器行为。
第一个案例:
#include <iostream>
#include <typeinfo>
int main(int argc, char** argv)
{
int* a,b;
std::cout << typeid(&a).name() << std::endl;
std::cout << typeid(&b).name() << std::endl;
return 0;
}
第一种情况,程序输出将是这样的:
PPi
Pi
据我所知,这意味着指向“a”的指针将是“int**”类型,而指向“b”的指针将是“int*”类型 这对我来说似乎很奇怪,我不明白为什么它会这样工作。
第二种情况:
#include <iostream>
#include <typeinfo>
int main(int argc, char** argv)
{
int* a;
int* b;
std::cout << typeid(&a).name() << std::endl;
std::cout << typeid(&b).name() << std::endl;
return 0;
}
第二个输出:
PPi
PPi
在这种情况下,指针接收理论上应该在第一种情况下接收的类型。 我不知道在哪里可以找到这方面的信息。我学C++的书里根本没有这方面的内容。