char *p = "nihao!";
cout<<*p<
文字常量区,比如你写int main( ){ char *str = "nihao";}
str是个字符串指针,它在main函数的作用域中,被保存到main函数的栈空间中
但是它所指向的字符串nihao,将被保存在静态存储区中。
没事来0x30百度贴吧耍耍,共同分享交流C/C++
要输出地址,这样写 cout << static_cast
C++有个特性叫做重载,重载最简单的就是函数重载.
ostream类中的ostream& opeartor<<()有很多版本,其中两个是
ostream& operator << ( char* p ) // 这个版本输出p地址的字符串,遇到'\0'结束
ostream& operator << ( void* p ) // 这个版本会输出p的地址
C++还有一个特性叫做隐式转换,其中一个是任何指针可以隐式转换成void*,
所以任何 cout << double* ; cout << int*等等都会输出指针地址
因为会调用void*的版本
C++程序有3个存储区域,栈区,堆区(自由存储),和静态数据区.
从某个抽象视觉角度看,栈从上到下向堆延伸,堆从下往上,向栈延伸.而数据区在堆在下面
任何C++字符串字面值都是分配在静态数据区中的常量数组类型.
char* p = "the quick brown fox" // char * = const char(&)[20] // 隐式转换数组首地址给指针
这是字符串输出问题 }
#include
#include
int main()
{
char *p = "nihao!";//定义了一个字符数组,其实就是一个字符串,字符串首地址为p
cout<<*p<