hur.cn - 华软网

 热门搜索

endl 和\n有什么区别

  作者:未知    来源:网络    更新时间:2011/9/30
问题一:
"endl" 和"\n"有什么区别?
问题二:

char a[] = "hello";
cout<<&a[0]<<endl;//为什么输出“hello”????

---华软 网友回答---
1.可以说没区别..
2.a[0]取地址还是数组首地址 所以输出的还是数组
---华软网友回复---
1. endl是个函数,它的一个定义为:
C++">
_CRTIMP2_PURE inline basic_ostream<wchar_t, char_traits<wchar_t> >&
__CLRCALL_OR_CDECL endl(basic_ostream<wchar_t,
char_traits<wchar_t> >& _Ostr)
{ // insert newline and flush wide stream
_Ostr.put('\n');
_Ostr.flush();
return (_Ostr);
}

根据情况会输出宽字符'\n'
2. 常用的字符串指针是char *
而这里a[0]是第一个字符'h'那么&a[0]就是char*,而且是指向"hello"的第一个字符'h',这就和char* p = "hello"类似,所以输出hello
---华软网友回复---
百度百科

endl是C++标准库中的操控器(Manipulator),包含于<iostream>(<iostream>),命名空间(namespace):std。


---华软网友回复---
问题一:
 效果没区别,但实现上不一样:'\n'为标准转义换行符号,而endl则是内联函数,其实现如下:头文件(ostream)中
C++">
   _CRTIMP inline basic_ostream<char, char_traits<char> >&
__cdecl endl(basic_ostream<char, char_traits<char> >& _O)
{_O.put('\n');
_O.flush();
return (_O); }

问题二:
  数组有一特性,数组的首地址等于数组第一个成员的地址。所以
char a[] = "hello";
的首地可以是  a 或者 &a[0];
---华软网友回复---
引用 4 楼 gameslq 的回复:
  数组有一特性,数组的首地址等于数组第一个成员的地址。


  我用内存映射时发现:

  C++中动态数组vector数组的首地址“不”等于数组第一个成员的地址。

  所以内存映射vector时只能用第一个成员的地址,才有效。
---华软网友回复---
mark 

引用 5 楼 hztj2005 的回复:
引用 4 楼 gameslq 的回复:

数组有一特性,数组的首地址等于数组第一个成员的地址。


  我用内存映射时发现:

  C++中动态数组vector数组的首地址“不”等于数组第一个成员的地址。

  所以内存映射vector时只能用第一个成员的地址,才有效。

---华软网友回复---
vector 不是数组吧,是STL中的对象
---华软网友回复---
&a[0];得到也是a的首地址,数组a的首地址和a[0]第一个元素的首地址是相同的
---华软网友回复---
endl是std标准库的换行实现
数组名和元素首地址,最后字符输出都会打印字符串
---华软网友回复---
学习.
---华软网友回复---
我记得的是 endl会清空io缓冲区
---华软网友回复---
"我记得的是 endl会清空io缓冲区" 正解 
强制刷新,输出流对象里的字符串。
---华软网友回复---
\n好像没有如上功能
---华软网友回复---
比如重载<<

我说的是控制台下

需要

ostream& operator<<(ostream& o, const& 对象)。



我们实际调用的时候是这样的 cout<<对象。。。。

看不到  第一个参数啊?

cout<<对象,展开就是:


operator<<(cout,对象);

返回一个对象。。。





     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。