自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (8)
  • 收藏
  • 关注

转载 算法题:求从n个数组任意选取一个元素的所有组合

http://www.cnblogs.com/shuaiwhu/archive/2011/06/15/2081552.html

2016-09-26 23:24:33 3358

原创 sprintf和snprintf函数用法简介

函数原型int sprintf(char *buffer, const char *format, [ argument] … );参数列表    buffer:char型指针,指向将要写入的字符串的缓冲区。    format:格式化字符串。    [argument]...:可选参数,可以是任何类型的数据。    返回值:字符串长度(strlen)函数功能:把格

2014-03-09 20:19:36 6044

原创 二级指针详解

例1:void test(int *b){ *b = 10;}int main(){ int a = 5; test(&a); printf("%d\n", a);}首先,看这个简单的函数,通过把实参变量a的地址传递给被调函数test,改变实参变量a的值。总结下:在传址中,主子函数关系为将实参的地址传给形参后,子函数的形参就能够操控主函数中的

2014-03-08 19:56:15 3303

原创 函数strtol和strtok详解

一、strtol()函数的原型为:long int strtol(const char *nptr, char **endptr, int base);函数的解释说明  这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0

2014-03-05 20:04:26 2800

原创 operator int()用法

operator int() 是类型转换运算符,比如:struct A{ int a; A(int i):a(i){} operator int() const { return a; }};void main(){ A aa(1); int i = int(aa); int j = aa; //作用一样}该函数的返回值类型就是函数名,所以不用显式地表

2013-10-27 16:48:50 9309 4

原创 内联函数和宏的区别

先说宏和函数的区别:1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的

2013-10-22 22:37:31 698

转载 静态链接库与动态链接库

一、           介绍本文意在讲解静态链接库与动态链接库的创建与使用,在此之前先来对二者的概念、区别及优缺点进行简要的阐述。其中大多内容参考相关网络资料,由于本人能力有限,不能确保完全准确无误,若有偏差之处请不吝指出。文中使用到的代码均在Visual Studio 2008中编译通过,如果您使用的IDE与本文不同,可根据实际情况进行相应项目创建与操作。希望本文内容对您有所帮助。

2013-10-17 16:03:04 1060

转载 彻底搞定C指针-函数名与函数指针

函数名与函数指针一 通常的函数调用    一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return 0;}

2013-10-15 10:58:54 706

转载 C语言 子函数return(局部变量&局部指针&栈)机制 笔记

0引C/C++中,函数内部的一切变量(函数内部局部变量,形参 )都是在其被调用时才被分配内存单元。子函数运行结束时,所有局部变量的内存单元会被系统释放。形参和函数内部的局部变量的生命期和作用域都是在函数内部( static变量的生命期除外)。在C中,函数被调用时的传参方式有两种形式:传值和传址。传址的好处:(1)能在函数内部通过实参地址间接地改变实参的值。(

2013-10-07 21:34:02 1830

原创 函数返回值问题

/** * @brief 整数转换为字符串 */#include #if 1char* IntToString(int value){ char str[10] = {'0'}; int tmp = value; int reminder = 0; int cnt = 0; while ( tmp > 0 ) { reminder = tmp % 10; tm

2013-10-07 19:21:34 813

转载 C++各种函数为什么能或者不能是虚函数

最近有人问构造函数能不能是虚函数:当然不能解释一下:1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2,从使用角度虚函数主要用于在信

2013-10-06 22:29:09 1011

转载 论虚构造函数与虚复制构造函数的实现!

一看标题,这个有点过,甚至有点哗众取宠性质,因为从C++的语言角度,其实构造函数及复制构造函数是并不存在虚函数形式的,原因是为何,先把C++ Primer中的原话引述上来:……只有析构函数应定义为虚函数,构造函数不能定义为虚函数。构造函数是在对象完全构造之前运行的,在构造函数运行的时候,对象的动态类型还不完整。        甚至有人一看见这文章标题,就要骂我,构造函数本来不允许虚,而且这

2013-09-28 21:22:03 1289

转载 模板全特化和偏特化

全特化就是全部特化,即针对所有的模板参数进行特化。《c++ primer》偏特化就是部分特化,即针对部分模板参数进行特化。《c++ primer》其形式分别为:templateclass C{};全特化:template<>class C{};templateclass C{};偏特化:templateclass C{};#include us

2013-09-14 16:40:53 747

转载 C++之类与对象的深入剖析—由底层和逻辑说开去

推荐博客:http://www.cnblogs.com/dragonfive/p/3265847.html

2013-09-11 09:52:40 591

转载 C++面试题目

推荐博客:http://zhedahht.blog.163.com/blog/#m=0

2013-09-10 16:30:48 670

转载 C++深浅拷贝

推荐博客:http://www.cnblogs.com/sorliran/archive/2013/01/08/2845010.html                   http://blog.pfan.cn/goal00001111/10944.html

2013-09-10 10:43:47 895

转载 拷贝构造函数的参数为什么必须使用引用类型

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的

2013-09-10 09:25:08 775

转载 面向对象和面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。  面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6

2013-09-08 09:17:34 784

转载 多重继承和虚继承的内存布局

这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(By Edsko de Vries, January 2006)      敬告: 本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。   本文我们将阐释G

2013-09-05 10:49:45 765

转载 C/C++ 语言中的表达式求值

裘宗燕:C/C++ 语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 要弄清这些,需要理解的一个问题是:如果程序里某处修改了一个变量(通过赋值、增量

2013-09-03 14:42:59 739

转载 calloc(), malloc(), realloc(), alloca()函数的区别

malloc : 向堆申请分配内存,不初始化calloc  : 向堆申请分配内存,初始化为0realloc:  向堆申请分配内存,可调整大小alloc   :  向栈申请内存,不需手动释放四个函数的声明分别是:void * __cdecl  alloca(size_t);void* malloc(unsigned size);void* calloc(s

2013-08-30 20:11:56 761

转载 C++中构造函数和析构函数避免调用虚函数的问题

一、构造函数避免调用虚函数的问题在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。#include using namespace std;struct C180{ C180() { foo(); this->foo(); } virtual

2013-08-30 19:46:28 853

转载 C++中构造函数调用其他函数

#include #include using namespace std;struct CLS{ int m_i; CLS( int i ) : m_i(i){} CLS() { CLS(0); }};int main(){ CLS obj; cout << obj.m_i << endl; sys

2013-08-30 16:43:55 7189 1

原创 各种排序算法时间复杂度、稳定性、初始序列是否对元素比较次数有关

怎么记忆稳定性:总过四大类排序:插入、选择、交换、归并(基数排序暂且不算)比较高级一点的(时间复杂度低一点得)shell排序,堆排序,快速排序(除了归并排序)都是不稳定的,在加上低一级的选择排序是不稳定的。比较低级一点的(时间复杂度高一点的)插入排序,               冒泡排序,归并排序,基数排序都是稳定的。(4种不稳定,4种稳定)。怎么记忆初始序列是否对元素的比较

2013-08-30 10:48:54 34603 3

转载 C++四种强制类型转换

一、reinterpret_cast(a)编译器在编译期处理任何指针都可以转换成其它类型的指针,T必须是一个指针、引用、算术类型、指向函数的指针或指向一个类成员的指针。表达式reinterpret_cast(a)能够用于诸如char* 到 int*,或者One_class* 到 Unrelated_class*等类似这样的转换,因此可能是不安全的。使用reinterpr

2013-08-30 10:26:49 835

原创 二叉树创建和遍历详细分析

对于二叉树,原来始终不明白用递归前序创建,前序遍历究竟是怎么回事,今天晚上好好琢磨了下。两种不同的方法:1、可以考虑把递归调用的函数考虑为调用不同的函数,方便分析。2,如果考虑为调用同一个函数时,递归是用栈来实现的,用栈来分析的话就比较方便。对于如图所示的一个二叉树,前序创建时的代码为:/** * @brief 递归前序创建二叉树 * @attent

2013-07-02 22:56:47 1053

原创 按位与、按位异或、按位取反

& 按位与 | 按位或 ^ 按位异或 1. 按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为000000001

2013-07-02 17:27:58 920

转载 用rand()和srand()产生伪随机数的方法总结

标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的

2013-07-01 10:08:31 691

原创 数据结构—双链表的操作

/** * @brief 双链表的初始化,建立,插入,查找,删除 * @author ranqy374 * @date 2013.6.26 */#include #include //双链表结点类型的定义typedef struct Node { int data; struct Node *prior; struct Node *next;}DLN

2013-06-28 16:57:09 676

原创 数据结构—单链表的操作

单链表的操作:包括创建(头插法、尾插法)、删除结点、添加结点、单链表转置、寻找两个链表的共同结点、单链表创建环、判断单链表是否有环、解环(待添加)#include #include //线性表的单链表存储结构typedef struct Node{ int data; struct Node *next;}SNode;//单链表的初始化SNode* LinkedLi

2013-06-28 14:32:26 928

原创 数据结构—线性表之顺序表的操作

数据结构中,线性表之顺序表的操作,包括初始化、创建顺序表、插入,删除,查找#include #include /** * @brief 线性表的顺序存储结构,在存、读数据时不管是哪个位置,时间复杂度都为O(1) * 而插入或删除时,时间复杂度为O(n) * 比较适合元素个数不太变化,而更多是存取数据的应用 *///顺序表的结构定义#defi

2013-06-27 16:27:34 877

原创 exit()函数的用法

exit是一个库函数,exit()使程序立即正常终止,如果状态值为0则认为正常推出,如果非零则说明存在执行错误。调用exit()清除和关闭所有打开的文件,写出任何缓冲输出,并且调用所有atexit()登记的程序终止函数。相关函数:_exit()终止程序时,不关闭任何文件,不清除任何缓冲器,也不调用任何终止函数abort()程序终止运行,不清除文件,返回3到调用过程,一般用在防止程序失控

2013-06-27 14:42:00 2733

转载 C++中引用,指针,指针的引用,指针的指针

目录(?)[+]定义一个指针的三种写法都对:1. int * p;  2. int* p;  3. int *p; 习惯不同而已定义一个函数指针的三种写法都对:1. int *p(); 2. int * p(); 3. int* p();1、指针传递和引用传递在C语言中,如果要实现在函数内部改变外部变量的值的话,就应该传递这个变量的指针。如果

2013-06-25 15:22:31 4920 1

转载 很形象的接口的使用——针对初学者

里氏代换原则是什么?听起来很高深,不过我们也不是什么学院派,就不讲大道理了,直接拿个例子来说一下。我们拿人和程序员举个例子。人是一个大类,程序员是继承自人的子类。看看这句话:人需要吃饭。这句话我们把“人”换成“程序员”,就是:程序员需要吃饭,这样换不会有什么问题。现在我们反过来,把“程序员可以用计算机写程序”里边的程序员换成“人”,就是:人可以用计算机写程序。这样就不一定正确了,否则问题可就大

2013-06-13 10:56:03 640

转载 各种排序算法的稳定性和时间复杂度小结

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:  这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复

2013-05-28 16:52:34 1169

转载 结构体定义 typedef struct 用法详解和用法小结

typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去str

2013-04-24 10:48:06 593

转载 字符数组,字符指针

1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写  "abc",那么编译器帮你存储的是"abc\0"2."abc"是常量吗?答案是有时是,有时不是。  不是常量的情况:"abc"作为字符数组初始值的时候就不是,如                  char str[] = "abc";    因为定义的是一个字符数组,所以就相当于定义了

2013-04-22 15:23:28 459

转载 Pycharm 快捷键

Ctrl /注释(取消注释)选择的行Shift + Enter开始新行Ctrl + Enter智能换行TAB Shift+TAB缩进/取消缩进所选择的行Ctrl + Alt + I自动缩进行Ctrl + Y删除当前插入符所在的行Ctrl + D复制当前行、或者选择的块Ctrl + Shift + J合并行

2013-04-05 17:01:09 1287

原创 c++中find函数的用法

1,返回字符(字符串)在原来字符串的中首次出现的下标位置例:string s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");  position = s.find("jk");  2,返回flag 中任意字符 在s 中第一次出现的下标位置  flag = "c";  position = s.find_first_of(flag);

2013-04-02 15:55:30 2270

转载 c++ new的用法

c++中,new的用法很灵活,这里进行了简单的总结:1. new() 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;2. new[] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量;  char* p=new char("Hello"); -----error:分配一个char(1字节)的空间,用"Hello"来初始化,这明显

2013-03-28 16:00:37 1178

oracle 自带的oci相关例子

oracle 自带的oci相关例子,之前网上很难找,终于花50积分下了个,包括odbc,occi,oci等等,方便大家学习使用

2020-09-09

C程序设计高级教程

C程序设计高级教程-周立功,从工程角度讲解C语言,很具有实战价值

2013-04-25

Visual.Cpp数字图像处理part1.rar

Visual.Cpp数字图像处理part1.rar 谢凤英

2013-03-21

Visual.Cpp数字图像处理part3.pdf

Visual.Cpp数字图像处理part3.pdf 谢凤英版

2013-03-21

Visual.Cpp数字图像处理part4.pdf

Visual.Cpp数字图像处理part4.pdf 谢凤英

2013-03-21

Visual.Cpp数字图像处理part2.pdf

Visual.Cpp数字图像处理part2.pdf 谢凤英版

2013-03-20

stm32 FFT算法

本例程采用C语言版本的FFT算法对一个软件合成的信号进行FFT变换,并将FFT变换后每个频点的幅值打印输出。 信号合成程序

2012-09-29

stm32 can总线数据传输

stm32 CAN总线数据传输—正常模式

2012-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除