![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
chenzhou_cz
这个作者很懒,什么都没留下…
展开
-
从键盘输入文件结束符方法
从键盘向程序输入数据序列,输入文件结束符的方法:windows:Ctrl+Z,EnterUnix、Mac OS X:Ctrl+D如可用上面提到的文件结束符来结束如下的循环:int sum = 0, value = 0;while (cin >> value) sum += value;原创 2015-04-19 10:09:56 · 888 阅读 · 0 评论 -
fgets、gets和scanf的区别
gets()从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。 注意:gets函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原转载 2015-12-22 16:23:02 · 628 阅读 · 0 评论 -
C语言预处理命令总结大全
C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境。本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。ANSI标准定义的C语言预处理程序包括下列命令:#define,#error,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,#p转载 2015-12-16 14:08:43 · 407 阅读 · 0 评论 -
优先队列的使用
在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的第一种用法:priority_queueint> qi;通过故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这时我们可以传入一个比较函数,使用functional.h函数对象作为比较函数。priority_queue转载 2015-10-30 10:08:38 · 336 阅读 · 0 评论 -
new operator,operator new,placement new
c++中new的三种形态:new operator,operator new,placement new,new operator/delete operator就是new和delete操作符,而operator new/operator delete是函数。一、new operatornew (不可以被重载)执行过程:1、通过operator new申请内存2、使用placeme转载 2015-09-15 11:04:39 · 371 阅读 · 0 评论 -
宏展开
在c标准库中,d的实现中,有这样一段代码:#define _STR(x) _VAL(x)#define _VAL(x) #x刚看到时觉得这段代码不就相当于:#define _STR(x) #x后来发现自己理解错了,现对其进行说明。1、宏定义中使用的#、##、\#:将其后边的宏参数进行字符串化操作。##:连接符,用来将2个token连接为一个token,即将宏定义的2个形参连接为一原创 2015-04-12 15:01:15 · 1744 阅读 · 0 评论 -
c/c++代码如何相互调用
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译、调用协议等。使用extern "C" 主要是因为C编译器编译函数时不带参数的类型信息,只包含函数的符号名字。如 int foo( float x )C编译器会将此函数编译成类似转载 2015-06-23 15:05:52 · 469 阅读 · 0 评论 -
C语言二维数组作为函数参数传递
一、二维数组存放方式二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素...二、二维数组作为函数参数二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中队形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:void f(int a[3][4]);void f(int a[][4]);它们是合法且等价,也可原创 2015-05-06 15:06:11 · 8789 阅读 · 1 评论 -
c语言函数名和宏定义冲突
c标准库中有这样的代码:int tolower(int);#define tolower(c) _Tolower[(int)(c)]在tolower.c中有这样的代码:int (tolower)(int){ return (_Tolower[c]);}也就是在函数定义的时候在函数名外加了一对括号,我们知道当函数名和宏名冲突时,宏名会掩盖函数名,而加的括号可以阻止翻译程序识别和展开宏原创 2015-04-13 12:41:27 · 3059 阅读 · 0 评论 -
段错误 (核心已转储)
今天在Ubuntu上使用c语言写程序,出现了“段错误 (核心已转储)”。所谓段错误就是访问了不可访问的内存,段错误常由以下几种情况引起:1、访问系统数据区2、内存越界如数组越界3、栈溢出C语言中,函数参数的值,局部变量存放在栈中。windows中栈的大小是1M(我的vs2013是这样,可通过“项目”->“属性”->“链接器”->“系统”->“堆栈保留大小”查看和设置)。li原创 2015-04-10 21:00:04 · 1502 阅读 · 0 评论 -
递归与尾递归
1、递归 简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。用递归需要注意以下两点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。递归一般用于解决三类问题: (1)数据的定转载 2015-04-15 18:27:56 · 723 阅读 · 0 评论 -
图的常用存储结构----邻接表
实现方法:1、动态建表Method:对于每个读入的边建立一个邻接表节点的对象,加入到相应的邻接表中,同时动态申请内存。Property:(1)对于无向图的邻接表,每个顶点度就是该顶点的邻接表中节点数。(2)对于有向图,第i个链表(邻接表)中的节点数是vi节点的出度;求其入度需要遍历整个邻接表或者建立你邻接表。(3)对于同一个图,输入边的顺序不同,其邻转载 2016-04-02 10:50:34 · 616 阅读 · 0 评论