Jecho

导航

上一页 1 ··· 10 11 12 13 14

2013年5月9日 #

Array 越界不报错的问题

摘要: C/C++是不检查数组下标是否越界的?奇怪的事情。。。不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。自己写了一段检测程序测试这个问题,发现如果数组下标越界了,那么它会自动接着那块内存往后写。想了一下明白了,以前说不允许数组下标越界,并不是因为界外没有存储空间,而是因为界外的内容是未知的。也就是说如果界外的空间暂时没有被利用,那么我们可以占用那块内存,但是如果之前界外的内存已经存放了东西,那么我们越界过去就会覆盖那块内 阅读全文

posted @ 2013-05-09 11:24 Jecho 阅读(214) 评论(0) 推荐(0) 编辑

2013年5月8日 #

<cstdlib> rand() srand()

摘要: 标准库 <cstdlib> (被包含于 <iostream> 中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的时候,它会查看:1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用srand(seed)一次来初始化它的起始值。2) 如 阅读全文

posted @ 2013-05-08 17:57 Jecho 阅读(214) 评论(0) 推荐(0) 编辑

2013年5月7日 #

endl 和 \n

摘要: "\n"表示内容为一个回车符的字符串。std::endl是流操作子,输出的作用和输出"\n"类似,但可能略有区别。std::endl输出一个换行符,并立即刷新缓冲区。例如,std::cout << std::endl;相当于std::cout << '\n' << std::flush;,或者std::cout << '\n'; std::fflush(stdout);。由于流操作符operator<<的重载,对于'\n'和"\n&quo 阅读全文

posted @ 2013-05-07 21:08 Jecho 阅读(423) 评论(0) 推荐(0) 编辑

char* + int or char or ...

摘要: 比如"testchar" + 1 = "estchar""testchar" + '9' = ""其实这个时候只是char*的指针与后面的值进行相加,看来C++里要时刻注意指针。 阅读全文

posted @ 2013-05-07 20:55 Jecho 阅读(129) 评论(0) 推荐(0) 编辑

error C2110: cannot add two pointers

摘要: 由于用久了C#,习惯了"content1"+"content2"的用法,但在C++中,这样的用法是不被支持的。const std::string message = "Hello" + ",World" + exclam ;这个先执行"Hello" + ",World",这是个char*+char*, 这个是没有重载的operator+的(就是2个指针相加)如果是exclam +"Hello" + ",World" ; 那么先执行exc 阅读全文

posted @ 2013-05-07 20:22 Jecho 阅读(722) 评论(0) 推荐(0) 编辑

iostream.h , iostream

摘要: 其实没有 < iostream.h > 这样的东西 --- 标准化委员会在简化非C标准头文件时用 < iostream > 取代了它。但又没有完全取消 < iostream.h > 的使用,并且很多编译器都同时支持 < iostream > 和 < iostream.h > ,造成现在的局面,老大(标准化委员会)确实有不得已的苦衷。话说当年,在标准化委员会动手重建新的标准库的时候,遇到了问题。为了避免类名和函数名的冲突问题,引入了名字空间std。但无数现有的C++代码都依赖于使用了多年的伪标准库中的功能,例如,声明在 < ios 阅读全文

posted @ 2013-05-07 20:03 Jecho 阅读(548) 评论(0) 推荐(0) 编辑

string类 与 头文件 <iostream> <string>

摘要: 一般接触C++的时候,都会用到string这个标准程序库提供的类型。需要包含对应的头文件。在不同的平台,头文件include的内容有时候也不一样。像string类型,有时候我们只#include iostream但不#include string一样可以编译通过。查了一下,结论就是 总是包含适当的头文件。STL编程的次要麻烦之一是虽然可以很容易地建立可以在一个平台上编译的软件,但在其它平台上则需要附加的#include指示。这个烦恼来自一个事实:C++标准(不像C标准)未能指定哪一个标准头文件必须或者可能被其他标准头文件#include。由于有了这样的灵活性,不同的实现就会选择去做不同的东西。 阅读全文

posted @ 2013-05-07 19:56 Jecho 阅读(1430) 评论(0) 推荐(0) 编辑

上一页 1 ··· 10 11 12 13 14