C/C++
winson_jason
这个作者很懒,什么都没留下…
展开
-
TEA、XTEA、XXTEA加密解密算法(C语言实现)
ref : https://blog.csdn.net/gsls200808/article/details/48243019在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫·惠勒与罗杰·尼达姆。这项技术最初于1994年提交给鲁汶的快速软件加密的研讨会上,并在该...转载 2019-11-12 08:43:22 · 2221 阅读 · 1 评论 -
strlen与sizeof的区别
strlen与sizeof的区别1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。4.数组做sizeof的参数不退化,传递转载 2012-02-15 16:11:17 · 488 阅读 · 0 评论 -
C语言中关键字volatile的含义
volatile 的意思是“易失的,易改变的”。这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化。通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx。当CPU把其值放到ebx中后就不会再关心对应内存中的值。若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并不会随之更新。为了解决这种情况就创建了volatile限定词,让代码在引转载 2012-02-15 16:52:16 · 7823 阅读 · 1 评论 -
c++三种函数传参方式
声明一下,本人不过菜鸟一个,有什么理解上的错误,希望大家能指出。 函数是最长用到的知识。试想一下,如果没有函数,你的main函数可能长的连你自己都觉得不好意思。既然每个人都会经常使用函数,我们有必要好好的理解函数的知识。 函数主要的知识点就是函数的声明,定义,调用。 今天主要讲函数的定义和调用。先简要的说一下声明。当调用函数在定义函数之前就应当声明一下告诉系统函数讲在转载 2012-02-19 10:13:31 · 6578 阅读 · 0 评论 -
c++ 虚函数实现机制
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我转载 2012-02-19 10:15:23 · 571 阅读 · 0 评论 -
引用和指针的联系和区别
★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★ 区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有 con转载 2012-02-19 10:50:52 · 518 阅读 · 0 评论 -
C++中多态的实现原理
C++中多态的实现原理多态是面向对象的基本特征之一。而虚函数是实现多态的方法。那么virtual function到底如何实现多态的呢?1 基类的内存分布情况请看下面的sampleclass A{void g(){.....}};则sizeof(A)=1;如果改为如下:class A{public: virtua转载 2012-02-18 11:34:38 · 698 阅读 · 0 评论 -
UNICODE与ANSI的区别
UNICODE与ANSI的区别什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Wind转载 2012-02-18 22:16:09 · 531 阅读 · 0 评论 -
C++链表,队列,栈的几道题目
1、已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从k开始报数,数到m的那个人出列,依次重复下去,直到圆桌的人全部出列。试用C++编写实现。 解析:本题就是约瑟夫环问题的实际场景,要通过输入n、m、k三个正整数,求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素:转载 2012-03-08 22:18:09 · 1203 阅读 · 0 评论 -
华为C++/MFC面试题(附上个人答案,不当之处请指正)
原文地址:华为C++/MFC面试题(附上个人答案,不当之处请指正)作者:华仔103PS:答案是本人随笔所写,可能不全甚至错误! 请不要盲目将其作为标准答案,不正之处,请指正,谢谢。C++/MFC 试题 一.填空题 (26 分 )1 . WIN32 平台下, sizeof(short) = __2__ ,sizeof(int) = __4__ , sizeof(lon转载 2012-03-09 15:54:23 · 8607 阅读 · 0 评论 -
Java2十大经典中文图书
Java2十大经典中文图书只针对Java2平台-而且是在国内可以找到的中文版的,其实书好不好是见仁见智的(高手可以去看Sun的开发文档,这也可以 理解)--这只是一家之见而已--欢迎大家点评。第一名:Java编程思想第二版(Thinking in java second)-包含范围:全部。没说的--绝对的大师作品--当之无愧的第一--第一版时就享誉整个java界(当时网上好象也有人原创 2012-03-31 13:06:51 · 634 阅读 · 0 评论 -
C51编程在不同内存空间(data xdata bdata)定义变量的注意事项
1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。2、data区内最好放局部变量。因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;3、确保你的程序中没有未调用的函数。在Keil C里遇到未转载 2012-08-02 10:00:08 · 3286 阅读 · 0 评论 -
VS2013使用笔记
一:代码编辑提示 1,Ctrl + J 自动提示 2,自动提示默认选中设置 TOOLS => Options => Text Editor => C/C++ => Advanced中,把 Member List Commit Aggressive设置为true即可。原创 2017-03-21 09:06:39 · 968 阅读 · 0 评论 -
单链表的反转实现(C++)
1#include iostream> 2#include cstdlib> 3 4using namespace std; 5 6class Node 7{ 8 private: 9 int data; 10 Node* next; 11 public: 12转载 2012-02-16 10:43:02 · 2528 阅读 · 0 评论 -
C语言常用排序全解
/*=============================================================================相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的转载 2012-02-14 11:50:03 · 386 阅读 · 0 评论 -
C语言缺陷与陷阱(笔记)
C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。第一部分研究了当程序被划分为记号时会发生的问题。第二部分继续研究了当程序的记号被编译器组合为声明、表达式和语句时会出现的问题。第三部分研究了由多个部分组成、分别编译并绑定到一起的C程序。第四部分处理了概念上的误解:当一个程序具体执行时会发生的事转载 2012-02-14 11:36:02 · 848 阅读 · 0 评论 -
已知单向链表的头结点head,写一个函数把这个链表逆序 ( Intel)
我们假设单向链表的节点如下:template typename T>class list_node{public:list_node * next;T data;};这个题目算是考察数据结构的最基础的题目了,有两种方法可以解此题:方法一: void reverse(node*& head) { if ( (h转载 2012-02-07 17:44:20 · 9878 阅读 · 0 评论 -
探索C++的秘密之详解extern "C"
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一原创 2012-02-07 10:28:31 · 436 阅读 · 0 评论 -
New/delete与malloc/free的详解
new/delete与malloc/free的详解作者:华清远见武汉华嵌技术支持曹伟东内容清单:1. C语言中的函数malloc和free2. C++中的运算符new和delete3. new/delete与malloc/free之间的联系和区别4. C/C++程序的内存分配介绍具体介绍:1. C语言的函数malloc和free (1) 函数mall转载 2012-02-07 14:13:25 · 481 阅读 · 0 评论 -
只能用intialization list 而不能用assignment
当类中含有const或reference 成员变量 原因: 1,构造函数的 {} 内的操作只能是赋值. 调用构造函数的时候,首先是给该实例(类的具体对象)分配空间. 使用初始化列表的话,就在分配空间的时候,同时将其空间初始化. 执行到构造函数的大括号里的时候,所有成员的空间都已经分配好了,无论是否已经被初始化过,对其调用的“=”只能是赋值, 2,初始化与赋值是不同的:原创 2012-02-07 15:31:25 · 1731 阅读 · 0 评论 -
C 语言中的指针和内存泄漏
避免陷阱级别: 中级Manish Virmani (mvirmani@in.ibm.com), 高级软件工程师, IBM2006 年 10 月 26 日在使用 C 语言时,您是否对花时间调试指针和内存泄漏问题感到厌倦?如果是这样,那么本文就适合您。您将了解可能导致内存破坏的指针操作类型,您还将研究一些场景,了解要在使用动态内存分配时考虑什么问题。引言对于任何使用 C 语转载 2012-02-09 09:51:12 · 492 阅读 · 0 评论 -
C语言:动态内存会被自动释放吗?杜绝“野指针”
函数体内的局部变量在函数结束时自动消亡。很多人误以为示例是正确的。理由是p 是局部的指针变量,它消亡的时候会让它所指的动态内存一起完蛋。这是错觉!void Func(void){char *p = (char *) malloc(100); // 动态内存会自动释放吗?}示例 试图让动态内存自动释放我们发现指针有一些“似是而非”的特征:(1)指针消亡了,并不表转载 2012-02-09 09:59:57 · 1370 阅读 · 0 评论 -
C语言:内存使用
1.用malloc或new申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。2.不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。3.避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。4.动态内存的申请与释放必须配对,防止内存泄漏。5.用free或delete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”转载 2012-02-09 09:55:41 · 429 阅读 · 0 评论 -
C语言:指针,C的灵魂
共八章内容。第一章。指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr;转载 2012-02-09 15:21:25 · 572 阅读 · 0 评论 -
不使用第三个变量交换a,b
不使用第三个变量交换a,b算法如下: a=a+b; b=a-b; a=a-b;原创 2012-02-14 09:54:46 · 480 阅读 · 0 评论 -
C语言编译全过程剖析
C语言编译全过程剖析内容摘要 C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。 一般情况下,我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(,一般是obj文件,至于具体过程就是上面说的那些阶段),翻译 2012-02-14 11:03:30 · 508 阅读 · 0 评论 -
纯虚函数接口如何定义?使用时应注意什么?
★参考资料★ http://www.ok2002.com/cc/cc/v.asp?r=a2273562170518//C++ 纯虚函数接口如何定义?使用时应注意什么?/*--定义纯虚函数接口:virtual void f()=0; //只是提供接口,实现留给继承类使用时应注意:子类必须要实现该函数--*/#includeusing namespace std;转载 2012-02-14 09:49:10 · 3756 阅读 · 0 评论 -
面向对象的三个基本特征
面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下转载 2012-02-07 11:15:45 · 384 阅读 · 0 评论