字符串的输出

char a[6] = {'h','a','p','p','y','\0'};
cout<<"a="<<a<<endl;
cout<<"*a="<<*a<<endl;

char ac[] = "happy";
cout<<"ac="<<ac<<endl;
cout<<"*ac="<<*ac<<endl;

char *p = "china";
cout<<"p="<<p<<endl;
cout<<"*p="<<*p<<endl;

string *q = new string("china");
cout<<"q="<<q<<endl;
cout<<"*q="<<*q<<endl;

输出为:

a=happy
*a=h
ac=happy
*ac=h
p=china
*p=c
q=0xb819f0
*q=china

再试试整形,

 int ab[10] = {1,2,3,6,7};
 cout<<"ab="<<ab<<endl;
 cout<<"*ab="<<*ab<<endl;

 int *pi = new int(10);
 cout<<"pi="<<pi<<endl;
 cout<<"*pi="<<*pi<<endl;

 int *pp = new int[3]{1,2,3};
 cout<<"pp="<<pp<<endl;
 cout<<"*pp="<<*pp<<endl;

输出为

ab=0x72fdf0
*ab=1
pi=0xb814f0
*pi=10
pp=0xb81510
*pp=1

特别要注意cout在输出的对象为字符串指针的时候,cout<<p输出的就是字符串,而不是地址,cout<<*p就是当前的那个字符,
若要输出指针存储的地址要使用(void*)p 。 因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表示数组的大小.所以cout函数没法知道该输出多少个元素。而字符串则不同,它有一个'\0'用来表示字符串结束,cout看到'\0'就知道输出结束了。

 

猜你喜欢

转载自blog.csdn.net/weixin_38345919/article/details/82469002