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'就知道输出结束了。