- 博客(214)
- 收藏
- 关注
原创 预处理、const、static、sizeof-说明内联函数使用的场合
预处理、const、static、sizeof-说明内联函数使用的场合1:首先使用inline函数可以完全取代表达式形式的宏定义。 内联函数在C++类中的应用最广的应该是用来定义存取函数。我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话...
2017-10-09 10:10:00
107
原创 预处理、const、static、sizeof-为什么inline能很好地取代表达式形式的预定义
预处理、const、static、sizeof-为什么inline能很好地取代表达式形式的预定义1:有如下几种原因:(1)inline定义的类的内联函数,函数的代码被放在符号表中,在使用时直接进行替换(像宏一样展开),没有了调用的开销,效率也很高。(2)类的内联函数也是一个真正的函数。编译器在调用一个内联函数时,首先会检查它的参数的类型,保证调用正确;然后进行一系列的相关检查,就像对待...
2017-10-09 09:51:00
132
原创 预处理、const、static与sizeof-为什么要引入内联函数
预处理、const、static与sizeof-为什么要引入内联函数1:引入内联函数的主要目的是,用它替代C语言中表达形式的宏定义来解决程序中函数调用的效率问题。在C语言里可以使用如下的宏定义:#define ExpressionName(Var1,Var2) (Var1+Var2)*(Var1-Var2) 这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压...
2017-10-08 16:45:00
101
原创 预处理、const、static与sizeof-#pragma pack的作用
预处理、const、static与sizeof-#pragma pack的作用1:有如下代码:#include <iostream.h>#pragma pack(1)struct test{ char c; short s1; short s2; int i;};int mian(){...
2017-10-08 16:33:00
88
原创 预处理、const、static与sizeof-sizeof与strlen有哪些区别
预处理、const、static与sizeof-sizeof与strlen有哪些区别1:它们的区别如下:(1)sizeof是操作符,strlen是函数。(2)sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型,该类型保证能容纳实现所建立的的最大对象的字节大小。(3)sizeof可以用类型作参考,strlen只能用char*做参考,且必...
2017-10-08 15:08:00
88
原创 预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别
预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别1:全局变量的说明之前再加上static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于,非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的;而静态全局变量则限...
2017-10-08 13:28:00
158
原创 预处理、const、static与sizeof-static有什么作用(至少说出2个)
预处理、const、static与sizeof-static有什么作用(至少说出2个)1:在C语言中,关键字static有3个明显的作用:(1)在函数体,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。(2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有的函数访问,但不能被模块外其他函数访问。它是一个本地的全局变量。(3)在模块内,一个被声明为静态的函...
2017-10-08 12:34:00
122
原创 预处理、const、static与sizeof-C++中const有什么作用(至少说出3个)
预处理、const、static与sizeof-C++中const有什么作用(至少说出3个)1:作用如下:(1)const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。(2)const修饰函数形式的参数:当输入参数为用户自定义类型和抽象数据类型时,应该将“值传递”改为“const&传递”,可以提高效率。比较下面两段代码:void fun(A a...
2017-10-08 09:25:00
125
原创 预处理、const、static与sizeof-使用const与#define的特点及区别
预处理、const、static与sizeof-使用const与#define的特点及区别1:#define只是用来做文本替换的。例如:#define PI 3.1415926float angle;angle=30*PI/180; 那么,程序进行编译的时候,编译器会首先将“#define PI 3.1415926”以后所有代码中的“PI”全部换成“3.1415926”,然...
2017-10-08 08:55:00
102
原创 预处理、const、static与sizeof-使用宏定义得到一个数组所含的元素个数
预处理、const、static与sizeof-使用宏定义得到一个数组所含的元素个数1:代码如下:#define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))posted @ 2017-10-08 08:33 一串字符串 阅读(...) 评论(...) 编辑 收藏...
2017-10-08 08:33:00
332
原创 预处理、const、static与sizeof-用宏定义得到一个字的高位和低位字节
预处理、const、static与sizeof-用宏定义得到一个字的高位和低位字节1:代码如下:#define WORD_LO(XXX) ((byte) (word)(XXX) & 255)#define WORD_HI(XXX) ((byte) (word)(XXX) >> 8)posted @ 2017-10-07 23:42 一串字符串 阅读(......
2017-10-07 23:42:00
448
原创 预处理、const、static与sizeof-用#define实现宏并求最大值和最小值
预处理、const、static与sizeof-用#define实现宏并求最大值和最小值1:实现代码:#define MAX(x,y) (((x)>(y)) ? (x):(y))#define MIN(x,y) (((x)>(y)) ? (x):(y))需要注意的几点:(1)三元运算符(?:)(2)在宏中需要把参数小心地用括号括起来。因为宏只是简单的文本替换如...
2017-10-07 22:46:00
130
原创 C/C++程序基础-标准头文件的结构
C/C++程序基础-标准头文件的结构1:标准头文件有如下结构,请解释。#ifndef _INCvxWorksh#define _INCvxWorksh#ifdef _cplusplusextern "C"{#endif/*...*/#ifdef _cplusplus}#endif#endif /* _INCvxWorksh*/#ifdef _cplusplusex...
2017-10-07 21:25:00
255
原创 C/C++程序基础-如何理解C++是面向对象化的,而C是面向过程化的
C/C++程序基础-如何理解C++是面向对象化的,而C是面向过程化的1:答:C是面向过程化的,但是C++不是完全面向对象化的。在C++中也完全可以写出与C一样过程化的程序,所以只能说C++拥有面向对象的特性。Tava是真正面向对象化的。posted @ 2017-10-07 18:13 一串字符串 阅读(...) 评论(...) 编辑 收藏...
2017-10-07 18:13:00
315
原创 C/C++程序基础-C++与C有什么不同
C/C++程序基础-C++与C有什么不同1:C和C++的联系和区别?答:C是一个结构化语言,它的重点在于算法和数据结构。对于语言本身而言,C是C++的子集。C程序的设计首先要考虑的是如何通过一个过程,对输入进行运算处理,得到输出。对于C++,首先要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或者实现过程控制。 因此,C和C+...
2017-10-07 14:51:00
75
原创 OpenCV-利用其它widthStep方法把interest——img的所有像素值增加200
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;int main(){ IplImage* interest_img=cvLoadImage("C:\\horse.jpg"); cvNamedWindow("inte
2017-09-30 17:28:58
415
原创 OpenCV-用imageROI来增加某范围的像素
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;int main(){ IplImage* src; //IplImage* cvLoadImage( const char* filename, int flags
2017-09-30 17:03:13
353
原创 OpenCV-将JPG图像的第二个通道和第三个通道的值设置为最大值
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;void saturate_sv(IplImage* img){ for(int y=0;yheight;y++) { uchar* ptr=(ucha
2017-09-30 16:46:20
1219
原创 OpenCV-累加矩阵中的所有元素
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字{ printf("%s:\n
2017-09-30 16:35:25
2179
原创 OpenCV-利用cvPtr2D存取矩阵元素和用cvGetReal2D取矩阵元素
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字{ printf("%s:\n
2017-09-30 16:27:32
2853
原创 OpenCV-利用CV_MAT_ELEM宏和CV_MAT_ELEM_PTR宏存取CVMat数组元素
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字{ printf("%s:\n
2017-09-30 16:19:20
1421
原创 OpenCV-用固定数据创建一个opencv矩阵,并输出
1:代码如下:#include "stdafx.h"#include"highgui.h"#include"cv.h"void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字{ printf("%s:\n", name); for (int i=0; irows; i++)
2017-09-30 16:12:52
1255
原创 OpenCV-将图像两次缩放+转化为灰度图+边缘检测
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;IplImage* doCanny(IplImage* in,double lowThresh,double highThresh,double aperture){ if(i
2017-09-30 15:58:01
424
原创 OpenCV-将图像转化为灰度图,然后边缘检测
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;IplImage* doCanny(IplImage* in,double lowThresh,double highThresh,double aperture){ ...
2017-09-30 15:46:58
5123
原创 OpenCV-将图像缩放并显示
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"IplImage* doPyrDown(IplImage* in,int filter=IPL_GAUSSIAN_5x5){ assert(in->width%2==0 && in->height%2==0); //创建首地址并分配存储空间IplI
2017-09-29 17:38:05
2534
原创 OpenCV-将图像作平滑处理并显示
1:代码如下:#include "stdafx.h"#include "highgui.h"#include "cv.h"void example2_4(IplImage* image){ cvNamedWindow("Example4-in");//创建窗口显示输入 cvNamedWindow("Example4-out");//创建窗口显示输出 cvShowIma
2017-09-29 17:32:49
711
原创 数据结构-用C++实现一个二叉树,递归方法中序遍历
数据结构-用C++实现一个二叉树,递归方法中序遍历1:二叉排序树,又称二叉树。其定义为:二叉排序树或者空树,或者是满足如下性质的二叉树。(1)若它的左子树非空,则左子树上所有节点的值均小于根节点的值。(2)若它的右子树非空,则右子树上所有节点的值均大于根节点的值。(3)左、右子树本身又各是一颗二叉排序树。 上述性质简称二叉排序树性质(BST性质),故二叉排序树实际上是满足...
2017-09-29 09:15:00
766
原创 数据结构-使用两个栈实现一个队列
数据结构-使用两个栈实现一个队列1:如何只使用stack实现queue呢?我们知道stack是先进后出的(FIFO),而queue是先进先出的(FIFO)。也就是说,stack进行了一次反向。如果进行两次反向,就能实现queue的功能,所以我们需要两个stack实现queue。 下面是具体思路。假设有两个栈A和B,且都为空。可以认为栈A为提供入队列的功能,栈B提供出队列的功能。...
2017-09-28 16:16:00
139
原创 数据结构-使用队列实现栈
数据结构-使用队列实现栈1:考点:编程实现下面的stack,并根据stack完成queue的操作class MyStack{ void push(data); void pop(&data); bool isEmpty();}代码如下:#include "stdafx.h"#include<malloc.h>#in...
2017-09-28 16:02:00
117
原创 数据结构-队列和栈的使用
数据结构-队列和栈的使用1:问题:一个顺序为1,2,3,4,5,6的栈,依次进入一个队列,然后进栈,顺序是什么?答:首先一个顺序为1,2,3,4,5,6的栈,其意思是说进栈的顺序是1,2,3,4,5,6。按照栈的结构,1由于最先进栈,所以被放入栈底;6最后进栈,因此6位于栈顶。 然后进入一个队列。因为只能在栈顶进行出栈操作,也就是说,6最先出栈,1最后出栈。因此队列的入队顺序(也...
2017-09-28 10:56:00
189
原创 数据结构-队列和栈有什么区别
数据结构-队列和栈有什么区别1:队列和栈是两种不同的数据结构。它们有以下区别:(1)操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。(2)可操作的方式不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。(3)操作的方法不同。队列是先进先出(FIFO),即队列的修改是依先进先出的原则进...
2017-09-28 10:38:00
1966
原创 数据结构-编程实现队列的入队、出队、测长、打印、出队
数据结构-编程实现队列的入队、出队、测长、打印、出队1:代码如下:#include "stdafx.h"#include<malloc.h>#include <iostream>#include <assert.h>using namespace std;typedef struct _Node{ int data; s...
2017-09-28 10:26:00
989
原创 数据结构-编程实现一个双向链表节点的删除
数据结构-编程实现一个双向链表节点的删除1:代码如下:// ConsoleApplication24.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<malloc.h>#include <iostream>#include <assert.h>using namespace std;...
2017-09-27 21:15:00
166
原创 数据结构-编程实现一个双向链表节点的插入
数据结构-编程实现一个双向链表节点的插入1:这里分为两种插入情况:一种是 插入位置在中间,另一种是插入位置在末尾。两种情况有一点不同:插入位置在中间时需要把p的原后继节点的前驱指针指向新插入的节点。// ConsoleApplication24.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<malloc.h>...
2017-09-27 20:48:00
1077
原创 数据结构-编程实现一个双向链表的查找
数据结构-编程实现一个双向链表的查找1:代码如下:// ConsoleApplication24.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<malloc.h>#include <iostream>#include <assert.h>using namespace std;...
2017-09-27 17:48:00
403
原创 数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长
数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长1:双链表的建立,打印,代码如下:// ConsoleApplication24.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<malloc.h>#include <iostream>#include <assert.h>...
2017-09-27 17:17:00
135
原创 数据结构-约瑟夫问题,链表
数据结构-约瑟夫问题,链表1:问题:n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。(要求用单循环链表完成。)代码如...
2017-09-27 14:35:00
164
原创 数据结构-有序链表的合并
数据结构-有序链表的合并1:已知两个链表head1和head2各自有序,请把它们合并成一个链表,依然有序。使用非递归方法以及递归方法。2:首先介绍非递归方法。局部引用方法:这种方法避免使用虚拟节点(dummy node),而是使用一个指向指针的指针,struct node** lastPtrRef,这个指针指向结果链表的最后一个节点。在这个方法中,所有由虚拟节点完成的工作都有lastPtr...
2017-09-27 11:02:00
451
原创 数据结构-判断链表是否存在环形链表
数据结构-判断链表是否存在环形链表1:这里有一个比较简单的解法。设置两个指针p1、p2。每次循环p1向前走两步。直到p2碰到NULL指针或者两个指针相等时结束循环。如果两个指针相等,则说明存在环。代码如下:// ConsoleApplication15.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <malloc.h...
2017-09-27 09:55:00
200
原创 数据结构-单链表的正向排序
数据结构-单链表的正向排序1:代码如下:// ConsoleApplication15.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <malloc.h>#include <iostream>using namespace std;typedef struct node//定义链表结构体{...
2017-09-27 09:18:00
438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅