
C/C++
浪迹天涯_
这个作者很懒,什么都没留下…
展开
-
c++ 函数入口地址问题
最近在看《C++ 编程思想》,其中原创 2014-05-13 13:34:24 · 3292 阅读 · 0 评论 -
C++易混淆的一点
函数声明:int fun(int length, int width);函数定义:int fun(int length, int width){ }在函数定义中,大括号代替了分号的作用,因为大括号括起了一条或者一组语句,所以就不需要分号了。原创 2015-08-12 18:21:29 · 362 阅读 · 0 评论 -
C++成长之路
以前看过《C++编程思想》和《C++ premier》一遍,后来又用c++完成一个项目约1W行代码,再次阅读这两本书,体会更多,虽然还是有些不懂得地方,但是我想理解以后按照自己的思绪记录下来,加深记忆,促进自我学习与提高,后续会持续更新《C++成长之路》栏目。原创 2015-08-11 21:12:54 · 722 阅读 · 0 评论 -
eclipse C/C++执行scanf优先于printf
在eclipse中执行程序时,console总是要求先输入(scanf)在输出(printf)。就是说无论代码中存在多少个scanf,总是先执行scanf,再一个一个的printf输出来。后来查找资料发现主要是缓冲区的问题。程序开始,printf其实已经执行输出了,只是它把内容都输出到“输出缓冲区了(stdout)”,所以没有直接显示到屏幕上,等待把所有的scanf语句都执行完后,printf再会原创 2015-06-04 16:44:59 · 3272 阅读 · 4 评论 -
eclipse C++开发环境下怎样修改Author
自己编写的程序Author一直是空的,就想在编写一个程序时Author自动为自己的名字。我的开发环境如下:Windows 7 + eclipse(C/C++ version4.4.2)+ mingw32网上有一种方法如下:菜单栏Window -> Preferences -> Java ->Code style ->Code templates.在右侧选择comments -> Typ原创 2015-06-04 15:00:47 · 673 阅读 · 0 评论 -
const详解--C++
C++常量(关键字const)主要是为了使程序员能够在变和不变之间画一条直线。 const的最初动机是取代预处理器#define来进行值替代。 原因:C语言中预处理器可以不受限制的建立宏并用它来代替值。因为预处理器的值只做些文本替代,它并没有类型检查概念,也没有类型检查功能。所以预处理器的值替代会产生一些微小的问题,这些问题在C++中可以通过使用const值来避原创 2015-08-18 15:07:40 · 519 阅读 · 0 评论 -
C++创建与销毁对象
C++将效率控制作为最重要的问题,为了最大化运行速度,通过将对象放在栈中或者静态存储区域中,存储和生命期可以在编写时确定。 栈是内存中的一个区域,可以直接由微处理器在程序执行期间存放数据。在栈中的数据称为自动变量或者局部变量。 静态存储区域简单来说是内存中的一个固定块,在程序开始执行以前分配。 使用栈或静态存储区,可以快速分配和释放。但是原创 2015-08-13 19:13:23 · 4621 阅读 · 0 评论 -
C++中四种类型转换方式
类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些转载 2016-08-28 08:57:13 · 807 阅读 · 0 评论 -
C++原码、反码、补码详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式转载 2016-08-18 15:50:20 · 15974 阅读 · 3 评论 -
sizeof详解 -- C++
一、sizeof概念sizeof()是一个操作符(operator),不是函数。它的功能是返回一个对象或者类型名的长度,类型为size_t,单位为字节。size_t是一个依赖编译器的值,定义在头文件stddef.h,一般定义为 typedef unsigned int size_t;二、sizeof有三种语法:(1)sizeof(object);//sizeof(对象);(原创 2016-04-13 17:48:33 · 2415 阅读 · 0 评论 -
Char转为int时高位符号扩展的问题
代码示例: static get_utili(constchar*p){int util;…while(isspace((int)*p))//跳过空格++p;util=(int)*p++;…}现象&后果: 当传入的参数p指向的内容为0x9A、0XAB等内容(最高位为1)时,得到的int型变量util的值将会出错,因为char会进行符号扩展,使得0x9A(十进制的154)变成转载 2016-08-21 21:11:09 · 1350 阅读 · 0 评论 -
C++ explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”转载 2016-08-26 16:06:51 · 860 阅读 · 0 评论 -
continue与break的区别
break是结束当前循环,跳出当前的整个循环体。continue是结束当前循环的本次循环,然后继续下一轮循环。eg:使用break:while(x++ < 10){ if(x == 3) { break; } printf("%d\r\n", x);}//结果是输出 1 2 就退出了整个while循环.原创 2016-08-15 12:38:59 · 576 阅读 · 0 评论 -
如何将二维数组赋值给vector
vector > a;double b[10][10] = {1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,89,79};将b[10][10]值如何赋给a?一维数组:vector a;int b[5] = {1,2,3,4,5};a.push_back(b);二维数组:如果a的长度给定了, vector > a;b[5][6] =原创 2016-08-15 12:52:17 · 8492 阅读 · 2 评论 -
C与C++区别之处
1、int func()C :不确定参数数目,func(void)才表示空参数列表。C++:0个参数。2、func(int a)C :返回类型默认为int型。C++:函数必须有返回值类型。3、原创 2015-08-12 19:03:40 · 434 阅读 · 0 评论 -
C++怎样跳出双层for循环
方法一:用goto-----标准不提倡,破坏结构化程序。 方法二:设置标签(bool值)------当内层for循环满足跳出的条件时,将标签设置为真,然后break,这样就跳出了内层循环;外层for循环对标签进行判断,进而跳出外层for循环。当有更多层for循环时会出现困难,不过有人说如果这种情况出现的时候就要考虑是否自己设计的逻辑出现问题。原创 2015-08-12 19:20:45 · 10468 阅读 · 0 评论 -
VS2013批量注释快捷键
eclipse批量注释快捷键:Ctrl + / 批量取消注释快捷键:Ctrl + /VS2013批量注释快捷键:Ctrl + K + C 批量取消注释快捷键: Ctrl + K + U原创 2015-08-12 19:51:57 · 4276 阅读 · 0 评论 -
malloc函数能分配多少内存
在数学建模的时候用到这个函数来分配很大的内存,发现16G运行内存的电脑理论上2.5G的内存竟然不能分配。下面来探讨一下malloc函数分配内存的问题:malloc函数原型:extern void *malloc(unsigned int num_bytes);头文件:#include 功能:分配长度为num_bytes字节的内存块返回值:如果分配成功则返回指向被分配内存的指原创 2015-06-03 10:55:42 · 2318 阅读 · 0 评论 -
学习C++的一些感想
最近在做跟c++相关的项目,和师兄一起做项目,原创 2014-05-28 11:14:46 · 859 阅读 · 0 评论 -
eclipse中格式化代码快捷键Ctrl+Shift+F失效
之前使用eclipse发现快捷键Ctrl+Shift+F格式化代码非常好用。但是今天再用这个功能的时候发现怎么都不起作用,经过查找发现是输入法惹的祸。解决办法:(1)打开输入法设置界面->按键:(2)将快捷键组合Ctrl+Shift+F修改为Ctrl+Shift+J即可。这时候再使用以上快捷键就可以格式化代码了。原创 2015-06-15 16:42:05 · 895 阅读 · 0 评论 -
C99新特性
C99标准的新特性2010-6-29 先简单介绍下C语言的标准.C语言的发展历史大致上分为三个阶段:Old Style C、C89和C99.Ken Thompson和Dennis Ritchie发明C语言时有很多语法和现在并不一样,但为了向后兼容性(Backward Compatibility), 这些语法仍然在C89和C99中保留下来了.C89是最早的C语言规范,于1989年提出转载 2015-08-13 16:46:29 · 808 阅读 · 0 评论 -
为什么要找互联网公司
我是学通信的研究生,一直在纠结将来是去互联网公司还是去通信公司?毕竟本科和研究生专业都是通信方面的,如果将来就业不是本专业的岂不是很亏? 通信方面现在新的机遇可能就是4G,4G时代的机遇有哪些呢?引用前辈的话如下: 1、手机、平板等终端; 2、基站,运营商设备; 3、终端的4G芯片; 4、4G的算法与协原创 2015-09-13 15:39:48 · 721 阅读 · 0 评论 -
C++名字空间
当引入一个全局的using指令时(using namespace std等),就已经为那个文件打开了该名字空间。这对于一个实现文件(.cpp)来说是一个好方法,因为只有该文件编译结束时,using指令才会起作用,它不会影响到任何其他文件。 如果发现一个实现文件中使用太多的using指令而产生名字冲突(多个名字空间重复定义),就要对文件做简单的改变,使用明确的限定(使用的地方用s原创 2015-08-25 09:15:43 · 527 阅读 · 0 评论 -
内联函数详解--C++
C++中引入内联函数主要是可以解决使用宏带来的问题。 在C中,保持效率的一个方法是使用宏。预处理器直接用宏代码代替宏调用,就没有了参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN等开销。但是在C++中使用预处理器存在连个问题: (1)宏看起来像一个函数调用,但并不总是这样,它隐藏了难以发现的错误(C中也存在); 宏只原创 2015-08-24 21:34:38 · 570 阅读 · 0 评论 -
句柄类思想
句柄类,也叫Cheshire Cat(参见《C++编程思想》)。 问题背景是这样的: 1)在极为安全的领域,即使核心实现已经封闭在库中不可见,但是头文件中的变量定义仍然可能会曝露一些内部信息; 2)在设计初期,实现部分固然需要经常变动,连头文件中变量定义也需要经常变动,因此在重编译的时候头文件也需要编译,有时候导致编译时间过长。原创 2015-08-15 13:58:39 · 623 阅读 · 0 评论 -
C++文件读取
在C语言中打开和处理文件很复杂,并且一般用不上,以至于我看C++的时候直接忽略掉这部分。然而C++语言中的iostream库提供了一种简单的方法来处理文件。打开文件进行读写操作,必须包含,虽然会自动包含,但如果要使用cin、cout,最好还是现实包含。为了读而打开文件,要创建一个ifstream对象,它的用法与cin相同;为了写而打开文件,要创建ofstream对象,它的用法与cout相同原创 2015-08-12 17:59:58 · 1112 阅读 · 0 评论 -
C++ 编译过程
编译器直接将源代码转化成汇编语言或机器指令。C++编译过程主要有以下几个过程:(1)编译预处理 预处理主要包括三种:1)宏定义命令;2)条件编译命令;3)头文件包含命令。预处理命令以“#”开头。编译程序完成的工作,可以说是对源程序的“替换”工作。经过这个过程,生成一个没有宏定义、没有条件编译、没有特殊符号的输出文件(中间文件)。(2)编译、优化阶段 编译程序的工作原创 2015-08-11 21:59:57 · 548 阅读 · 0 评论 -
C++常见的质数判断算法
质数定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除。 算法1:(定义)判断一个整数n是否为质数,只需用2到n-1之间的每一个整数去除,如果都不能被整除,那么n就是一个质数#include #define MAX 100using namespace std;int main() { int j; for (int i = 2; i <=原创 2015-08-14 09:53:48 · 62430 阅读 · 2 评论 -
C++包含函数指针的复杂定义处理办法
void (*funcPtr)() 最好的处理办法是:从中间开始和向外扩展。“从中间开始”的意思是从变量名开始,这里指的是funcPtr。“向外扩展”的意思是先注意右边最近的项(在这个例子中没有该项,以右括号结束),然后注意左边(用星号表示指针),注意右边(空参数表表示这个函数没有带任何参数),再注意左边(void便是函数没有返回值)。大多数声明都是以右-左-右的方式工作。原创 2015-08-13 19:59:12 · 701 阅读 · 0 评论 -
判断素数算法的改进
1.素数的定义:如果一个正整数n只能被1和它本身整除,则这个正整数n就是素数(prime)。2.1 IsPrime的简单版本(1)检查1到n之间的每个数,看它是否能整除n。(2) 每次遇到一个新约数,计数器加1。(3)在所有的数都被测试以后,检查约数计数器的值是否为2。程序如下:bool IsPrime(int n){ int divisors = 0; for(原创 2016-11-14 10:54:05 · 1156 阅读 · 0 评论