下面的C++程序中,为什么cout<<p; 和cout<<*p;结果不同呢?这两者有什么区别呢?
#include<iostream>usingnamespacestd;voidmain(){char*p;p="123456";cout<<p<<endl;cout<<...
#include<iostream>
using namespace std;
void main(){
char *p;
p="123456";
cout<<p<<endl;
cout<<*p<<endl;
} 展开
using namespace std;
void main(){
char *p;
p="123456";
cout<<p<<endl;
cout<<*p<<endl;
} 展开
5个回答
展开全部
p本身是个指针,就是个地址,*p是p所指向的地址中存储的内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p是变量的地址,而(*p)就等价于你赋予的那个值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前者是输出的是变量的地址,后者是变量的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为p是字符型指针,所以*p应保证输出一个它所指的字符;
但p的输出含义被改成了输出它所指的字符串内容(本来应该输出字符指针的值,即地址),目的是为了输出字符串方便,字符型数组也类似。但这种操作与其他类型指针输出的不一致性,造成了c语言内部的混乱,给学习和理解带来了障碍。这种为了方便性,而忽视语言的一致性的设计在c语言中不止一处,就是c/c++语言的难学的原因之一,也是c程序中隐藏的错误难调、多发原因。
但p的输出含义被改成了输出它所指的字符串内容(本来应该输出字符指针的值,即地址),目的是为了输出字符串方便,字符型数组也类似。但这种操作与其他类型指针输出的不一致性,造成了c语言内部的混乱,给学习和理解带来了障碍。这种为了方便性,而忽视语言的一致性的设计在c语言中不止一处,就是c/c++语言的难学的原因之一,也是c程序中隐藏的错误难调、多发原因。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询