在c ++中玩指针。我遇到了意外情况。我有代码:
int main(){
char p=0;
char* ptr=&p;
cout<<"This is the pointer: "<<ptr;
return 0;
}
当我运行此代码时,输出ptr
为空白。如果我将的值更改p
为任何其他值,则似乎会输出一个随机指针,例如,运行之间的值更改,正如我所期望的那样。然后的问题是,将char值赋给0有什么不同。
额外信息:使用g ++ 4.8.4进行编译
char p=0;
您的变量被定义为字符,并被分配为零的整数值,因此在内部,您将在变量p上分配一个以空终止的字符。如果您按以下说明更正以上声明并打印更多详细信息,则可能会很清楚。
char p='0';
std::cout<<"This is the pointer: "<<&ptr<<" ---"<<*ptr <<"----"<<ptr;
&& ptr->获取ptr的地址
* ptr->获取分配给ptr的值
ptr->从ptr获取字符串,直到看到终止字符为空,因此希望将垃圾值作为输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句