cout<<mm 和cin>>nn;它是可以自己识别mm和nn是不是指针变量吗?
答:cin后面只能跟char*的指针,别的类型指针(eg:int*)报错;
cout后面跟char*的指针,打印的是里面的内容,cout后面跟int*的指针,打印的是地址;
cin输入时,如果给char* 会自动结束符吗,会的;
char *p2;前提是p2指向有空间的地址
cin
>> *
p2
;
//只是输入一个字符
cin
>>
p2
;
//输入p2所指的空间内容 全部修改
在C语言里,输出一个字符串的指针很方便,直接printf("%p/n",p);就输出了。
而
C++
里
cout
太自作聪明了,为了省去我们循环输出字符的麻烦,
cout<<p<<endl;
被翻译为输出
p
指向的字符串值。
这个时候要输出
p
的指针值就只能先将其转为
void *
再输出。因为
void
型,
cout
没法输出,只能乖乖输出指针。
此外
cout<<&p<<endl;
是不可取的,它其实等效于
printf("%p/n",&p);
那个输出流运算符被重载过,这样更加方便输出字符串,因为字符串比较特殊,用/0结尾,
所以这样的重载可行,输出到内存为
/0
的地方就可以,但是普通数组没有这样的特性所以不重载,直接输出地址