c++里cin不能输入指针类型的数据吗? 比如 int *p; cin>>p;怎么出错的?

如题所述

不可以,cin>>p中p表示的是地址不是数据,应该p = new int;先给p分配空间,然后输入 cin>>*p;追问

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-26
printf("%d",p)
这个打印的是p,
p是一个指针,它指向地址100,这个打印的就是100了
printf("%d",*p);
打印*p.这个就是地址100里的内容了。因为地址100为系统所用,所以就出错了!
第2个回答  2014-10-10
为了保证程序的安全性,指针不允许随意赋值的,如果你随便输入一个地址,然后就能让指针指向它,接着就能改变这段内存的数值,那不乱套了……
第3个回答  2014-10-10
应该是输入数据后存储于输入缓冲区中,然后回车把缓冲区的数据复制给接收的变量,这里为一个指针,指针无法直接指向一个常量。
第4个回答  2014-10-10
cin接受void*&类型,也就是指针的引用int*可以隐式转换为void*,也能转换为const void*&,所以只要cin >> (void*)p或者cin >> (void*&)p即刻追答

真当cast可以随便用么。

5年前我也是这么想的

想什么