自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (2)
  • 收藏
  • 关注

原创 avformat_open_input

/*打开输入流并读取标题。编解码器未打开。*流必须用avformat_close_input()关闭。** @param ps指向用户提供的AVFormatContext的指针(由avformat_alloc_context分配)。*可能是一个指向NULL的指针,在这种情况下,AVFormatContext被该函数分配并写入ps。*请注意,用户提供的AVFormatConte...

2019-09-08 12:11:27 424

原创 蚁群算法:寻食路径选择 (matlab实现)

转载请注明出处:http://blog.csdn.net/microlyc由http://blog.csdn.net/ibelievefly/article/details/47955473 旅行商问题改写;function ant()Q=400;%Q表示信息素增强的系数%nc_now表示当前的迭代次数nc_max=9999; %nc_max表示自主设置的最...

2017-10-27 20:08:33 1519

转载 函数返回局部变量的几种情况

转载  http://blog.csdn.net/haiwil/article/details/6691854/本文主要详细讨论了返回返回局部变量的几种情况,值得大家注意。 准确的来说,函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的)。    下面以函数返回局部变量的指针举几个典型的例子来说明:1: 

2017-10-25 12:15:52 306

转载 C++面试常见题目问与答(汇总一)

http://blog.csdn.net/charles_r_chiu/article/details/478588851、什么是虚函数?什么是纯虚函数?答:虚函数声明如下: virtual ReturnType FunctionName(Parameter);引入虚函数是为了动态绑定。 纯虚函数声明如下:virtual ReturnType FunctionName()= 0

2017-10-25 11:13:36 351

转载 C++中define与const的区别

区别如下:用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,

2017-10-25 08:59:51 189

转载 浅谈从源代码文件到二进制可执行文件的过程

=== .c   ===预处理 -》.c (源文件)编译 -》.s/asm (汇编程序)汇编 -》.o/obj 目标程序(二进制文件)链接 -》.exe可执行程序 (二进制文件)(1) 为什么要生成汇编,而不是直接从源文件编译成机器指令(二进制代码)?首先,汇编语言作为机器指令的助记符,调试以及优化起来都会比较方便;其次,汇编到机器指令的过程

2017-10-25 08:55:38 1016

转载 头文件中ifndef/define/endif的作用

例如:要编写头文件test.h          #ifndef _TEST_H          #define _TEST_H//一般是文件名的大写         ············          #endif        1.比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成

2017-10-25 08:50:12 822

转载 两数交换三种方法:指针,加减法与位运算

http://www.nowamagic.net/academy/detail/40110208void swap(int *x, int *y){ int t; t=*x; *x=*y; *y=t;}如果再加个限制,不使用额外的变量,可以这样:void swap(int *x,int *y){ *x = *x + *y;

2017-10-24 19:30:06 321

转载 红黑树

一步一图一代码,一定要让你真正彻底明白红黑树 作者:July   二零一一年一月九日http://my.csdn.net/v_JULY_v-----------------------------本文参考:I、  The Art of Computer Programming Volume III、 Introduction to Algorithm

2017-10-24 16:58:42 150

转载 内联函数和宏定义的区别

使用宏和内联函数都可以节省在函数调用方面所带来的时间开销。二者都采用了空间换时间的方式,在其调用处进行展开:(1)  在预编译时期,宏定义在调用处执行字符串的原样替换。在编译时期,内联函数在调用处展开,同时进行参数类型检查(而 宏 不检查)。(2)  内联函数首先是函数,可以像调用普通函数一样调用内联函数。而宏定义往往需要添加很多括号防止歧义,编写更加复杂。(3

2017-10-24 15:00:31 178

转载 内存泄漏,动态内存无作用域问题,如何避免内存泄漏

无论是C还是C++程序,运行时候的变量主要有三种分配方式:堆分配、栈分配、全局和静态内存分配。内存泄漏主要是发生在堆内存分配方式中,即“配置了内存后,所有指向该内存的指针都遗失了”,若缺乏语言这样的垃圾回收机制,这样的内存片就无法归还系统。因为内存泄漏属于程序运行中的问题,无法通过编译识别,所以只能在程序运行过程中来判别和诊断。 百度百科:内存泄漏(Memory

2017-10-24 11:26:53 761

转载 C语言带参数的main()函数

C语言带参数的main()函数http://www.cnblogs.com/geekham/p/4097182.html示例代码: 1 #include 2 3 int main(int argc, char *argv[]) 4 { 5 int i; 6 printf("Total %d arguments\n", argc);

2017-10-17 17:15:41 1031

转载 c语言 continue

在for循环中用break或continue跳出循环后 还执行增量表达式吗?break跳出循环,不再执行循环内的任何语句continue执行下一次循环,执行for里面的增量表达式continue不会跳过do while的条件判断(http://blog.csdn.net/you_lan_hai/article/details/50993768)int i = 0;do{

2017-10-17 16:37:42 1117

原创 C语言的左移和右移

左移:当左移的位数不超过该数值类型的最大位数时:逻辑左移(补0,丢弃最高位)当左移的位数超过该数值类型的最大位数时:编译器会用左移的位数去模类型的最大位数,然后按余数进行移位(只是执行:左移 所得的余数 个位数)int i = 1, j = 0x80000000; //设int为32位i = i << 33; // 33 % 32 = 1 只左移1位,i变成2j =

2017-10-17 16:18:45 2008

原创 指针类型:指向3行4列的整形二维数组

int a[3][4], *p, i; p = &a[0][0]; for (i = 0; i < 12; i++) { p[i] =i; } int (*pnum)[3][4]=&a;//赋a的地址 printf("%d\n", (*pnum)[1][3]);//要加*,要加括号,

2017-10-17 15:37:52 2595

原创 函数指针数组

2017-10-17 15:09:37 176

转载 typedef char (*PTRFUN)(int)

typedef char (*PTRFUN)(int); PTRFUN pFun; char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); }  typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指

2017-10-16 10:22:57 605

原创 快速排序

#include#includeusing namespace std;int partition(int A[], int left, int right) { int m = left + (right - left) / 2; if (A[left] > A[right]) swap(A[left], A[right]); if (A[m] > A[right]) swa

2017-10-16 10:09:22 135

原创 归并排序

#include#includeusing namespace std;const int maxn = 110;int merge(int a[], int left1, int right1, int l2,int r2) { int i = left1, j = l2; int temp[maxn], index = 0; while (i<=right1 && j<=r2)

2017-10-16 09:49:41 129

转载 卓越的教练是如何训练高手的?

这几年在全国巡回招聘应届毕业生的过程中,经常会遇到这样的现象:有些同学对自己的笔试比较满意,可是最后却得不到面试的机会,心里大为不解,颇有“死不瞑目”的味道。那么问题到底出现在哪里呢?让我们来看一个例子,这是我们招聘过程中一道常见的题目。   写一个函数,完成内存移动,并为其写一个简单的测试用例来进行测试。   够简单的吧?有的同学很快就写出了答案,详见程序清单1与程序清单2。

2017-10-15 22:04:30 140

原创 冒泡排序

void bubblesort(int m[], int n) { int i, j; bool flag = true; for (i = 0; i < n - 1 && flag; ++i) { flag = false; for (j = n - 2; j >= i; --j) { if (m[j] < m[j + 1]) { swap(m[j], m[j + 1

2017-10-15 08:34:02 236

转载 共享变量可见性

共享变量是 可以被多个进程 访问的变量。http://blog.csdn.net/luppy01/article/details/72602798可见性:多线程环境下,一个线程修改共享变量,能够及时被其他线程所感知共享变量:一个变量在多个线程的工作内存都存在副本,这个变量就是共享变量线程对共享变量的操作只能在自己的工作内存中进行,不能主内存中操作不同线程之间无法

2017-10-15 08:32:18 490

转载 [C++]数组初始化

定义:int *pia = new int[10]; // array of 10 uninitialized ints此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete在堆(自

2017-10-13 17:49:58 302

转载 重写、覆盖、重载、隐藏、多态几个概念的区别分析

override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。成员函数的重载(overload)、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。 1   重载与覆盖 

2017-10-11 09:24:14 167

转载 如何定义一个只能在堆(栈)上创建对象的类

在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。        静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。        动态建立类对象,是使用new运算符将对象建立

2017-10-11 08:51:38 192

原创 声明一个函数,参数是一个char,返回值是指向一个int参数一个int返回值的函数指针

int (*f(void))(int);//f是此函数名,此函数没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值int (*f(char))(int);//f是此函数名,此函数参数是一个char,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值#include int fun(int n

2017-10-11 08:36:00 3452

转载 关于#include&lt;**.h>和#include"**.h"的区别

当用#include“file.h”时,先搜索当前工作目录,如果没有,再去搜索库,库没有再搜索资源库;当用#include<file.h>时,编译器先从标准库路径开始搜索,如果没再搜索资源库目录,最好搜索当前工作目录。...

2017-10-11 08:23:41 3030

转载 -i++在两个线程分别执行100次,最大值和最小值分别多少

i++只需要执行一条指令,并不能保证多个线程i++,操作同一个i,可以得到正确的结果。因为还有寄存器的因素,多个cpu对应多个寄存器。每次要先把i从内存复制到寄存器,然后++,然后再把i复制到内存中,这需要至少3步。从这个意义上讲,说i++是原子的并不对。如此,假设两个线程的执行步骤如下:1、 线程A执行第一次i++,取出内存中的i,值为0,存放到寄存器后执行加1,此时CPU1的寄

2017-10-11 08:12:49 864

转载 C语言volatile关键字

volatile 是易变的、不稳定的意思。很多人根本就没见过这个关键字,不知道它的存在。也有很多程序员知道它的存在,但从来没用过它。我对它有种“杨家有女初长成,养在深闺人未识” 的感觉。volatile 关键字和const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进

2017-10-09 11:54:48 5520

转载 解释器和编译器区别和联系

http://blog.csdn.net/s646575997/article/details/525772561.解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。   编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(e

2017-10-09 11:45:06 197

转载 结构体在内存中的对齐规则

一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。例一:                                      #include                                       using namespace std;                                       

2017-10-09 11:40:53 165

转载 静态链接库与动态链接库----C/C++

http://blog.csdn.net/wayneclass/article/details/51780656一、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。二、

2017-10-09 11:24:02 674

转载 源代码文件到二进制可执行文件的过程

=== .c   ===预处理 -》.c (源文件)编译 -》.s/asm (汇编程序)汇编 -》.o/obj目标程序(二进制文件)链接 -》.exe可执行程序 (二进制文件)(1) 为什么要生成汇编,而不是直接从源文件编译成机器指令(二进制代码)?首先,汇编语言作为机器指令的助记符,调试以及优化起来都会比较方便;其次,汇编到机器指令的过

2017-10-09 11:21:10 6411

转载 局部变量、全局变量和静态变量的含义和区别

(1)局部变量       在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外时不能使用这些变量的,它们称为局部变量.   1.主函数main中定义的变量也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效.   2.不同函数中可以使用名字相同的变量,它们代表不同的对象,互不干扰.   3.形式参数也使局部变量

2017-10-09 11:09:41 886

转载 extern C作用总结

http://blog.csdn.net/wangjiaoyu250/article/details/42809047功能概述 主要用与在C++代码中调用的C函数的声明,或C++中编译的函数要在C中调用,也即是导入C形式的函数库或者提供C类型的库给C调用,。可以在C++中使用C的已编译好的函数模块,在c++中么用到c语言写的函数,声明一下,在DLL中经常看到,避免C++ n

2017-10-09 11:08:21 178

转载 EEPROM和flash的区别 及 nor flash和nand flash

狭义的EEPROM:这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM(掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。) flash:flash属于广义的EEPROM,因为它也是电擦

2017-10-09 11:02:19 5169 1

转载 结构体与类

先来说说C和C++中结构体的不同a) C语言中的结构体不能为空,否则会报错1>d:\myproject\visual studio 2013\projects\myc++\main.c(71): error C2016: C 要求一个结构或联合至少有一个成员b) C语言中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的。换句话说就是C语言中的结

2017-10-08 17:46:04 431

转载 堆和栈的区别(转)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2017-10-08 13:17:41 94

原创 new与malloc

再谈二者区别:1、new自动计算需要分配的空间,而malloc需要手工计算字节数2、new是类型安全的,而malloc不是,比如:int* p = new float[2]; // 编译时指出错误int* p = malloc(2*sizeof(float)); // 编译时无法指出错误new operator 由两步构成,分别是 operator new 和 c

2017-09-27 09:54:46 279

转载 memcpy和memmove()

memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count); 他们的作用是一样的,唯一的区别是,当

2017-09-27 09:25:59 219

空空如也

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

TA关注的人

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