C++
guoyong10721073
这个作者很懒,什么都没留下…
展开
-
整型数组左移或右移位简单操作
// 函数功能:将数组元素循环左移或右移一位/*输入参数:输入的数组 Input输入数组的长度ShiftN:取值为 1 或 -1 : 1 表示右移, -1表示左移*/void shift(int* Input, int n, int shiftN){int temp;int i;if( shiftN > 0 ){temp = *(Input+原创 2012-09-17 19:16:58 · 6460 阅读 · 0 评论 -
地址的减法操作的实质:int k=(int *)10-(int *)2; k = ?
问题1:int k=(int *)10-(int *)2; k = ?1)把10和2转换为一个指向int类型的指针((int*)10实质是一个地址值);2)地址的减法运算等价于在基址上的偏移量;因此,k = (10-2)/sizeof(int) = 2;问题2:int k=(int *)10-(int *)4; k = ?Answer: (k = 1)原创 2012-11-13 19:20:55 · 1169 阅读 · 0 评论 -
解读C语言中函数指针数组构成的复杂定义
int (*fun(int))(int) 函数的返回值是一个函数指针 (函数的返回值是一个指向函数的指针) int (*foo(int))[] 函数的返回值是一个数组指针 (函数的返回值是一个指向数组的指针) int (*foo[])(int) 数组里面允许有函数指针(数组foo里存储的是指向函数的指针) int foo[][]原创 2012-11-15 10:20:15 · 3300 阅读 · 0 评论 -
解读复杂定义char *(*c[10])(int **p);
char *(*c[10])(int **p);step1: (*c[10])() c是一个数组[0...9],它的元素类型是函数指针step2: char *(*c[10])() 函数的返回值为 char*把它们归纳起来,读作:c是一个数组[0...9],它的元素类型是函数指针,其指向的函数的返回值是一个指向char的指针。注:(int原创 2012-11-15 11:14:56 · 2306 阅读 · 0 评论 -
运算符的优先级
几个重要的运算符的优先级问题1) [] 高于* , 如 int *ap[] 等价于 (int *) (ap[]) 2) 函数()高于*,如int *fp() 等价于 (int *) (fp())3) ==和!= 高于位操作符,如(val & mask != 0)等价于 val & (mask !=0)4) ==和!= 高于赋值符,如 c = getc原创 2012-11-15 09:43:14 · 531 阅读 · 0 评论 -
给定数X,求X!的末尾连续零的个数
给定数X,求X!的末尾连续零的个数。比如 18!= 6402373705728000 末尾有三个零。提示:千万别掉进了一种思维定势,一定要求出阶乘,然后再判断末尾有几个零;我们可以换一个思维方式:什么情况下两数的乘积为得到末尾为零?举例:2 * 5 = 10 (结果的末尾增加一个零) 4 * 25 = 100 (结果原创 2012-12-02 21:23:14 · 883 阅读 · 0 评论 -
将用户输入的小写货币形式转换为规范的大写货币形式
需求:写一个程序,实现货币的小写转换成大写形式(符合习惯) 例如:输入123,456,789.02返回相应的大写 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元零贰分; 输入1000,返回壹仟元整;#include "stdafx.h"#include "math.h"#include #include using namespace std原创 2012-12-03 14:51:42 · 1499 阅读 · 0 评论 -
使用递归函数方式判读数组的递增性
/*要求:下面是一个递归函数判断数组a[]的前n个数组是否是不递增的。不递增返回1;否则,返回0。递归函数原型 bool dec(int a[],int n)数组名是常指针,不能以数组名遍历数组元素;判断数组元素的递增,要从数组的尾部开始遍历;*/int dec(int a[],int n){ if(n<=1) return 1; if(a[0]<a[1])转载 2012-12-13 14:54:07 · 1317 阅读 · 0 评论 -
C++中纯虚函数virtual func(int a, int b)=0;
C++纯虚函数 virtual func(int a, int b)=0; 参考:http://hi.baidu.com/cunlin/blog/item/d82b160102e0e4037aec2ccb.html (百度空间) =====================================================================转载 2016-09-02 15:05:09 · 7694 阅读 · 0 评论 -
C和C++中的new , malloc 的区别
转载网址:http://lib.csdn.net/article/c/307931.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库转载 2016-10-28 09:12:47 · 886 阅读 · 0 评论 -
结构体类型对象的相对寻找方法
问题:对于结构体类型,已知结构体对象中的一个变量成员的地址值,在不创建结构体对象的前提下,如何计算其他结构体变量成员?#include "stdafx.h"#include #include #include typedef unsigned int size_t;#define FIND(type, member) (size_t)&(((type *)0)->member) /原创 2012-11-13 19:46:18 · 567 阅读 · 0 评论 -
使用sizeof计算内存空间_第2篇
在下面代码中,假设在32位系统下,各sizeof计算的结果分别是多少? char *pArray0[5]={0}; //数组的元素是指针,指针指向的是char型的数据-- 指针数组,pArray0是数组名 char (*pArray1)[5]={0}; // 定义了一个指针pA原创 2012-11-07 16:55:14 · 625 阅读 · 0 评论 -
友元函数和友元类
友元函数和友元类一、友元的理解和比喻如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。友元类的说明将外界的某个类在本类别的定义中说明为友元,那么外界的类就成为本类的“朋友”,那个类就可以访问本类的私有数据了。二、为什么需要友元通常转载 2012-10-24 13:05:38 · 1021 阅读 · 0 评论 -
内联函数inline
一、什么叫inline函数? 当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大。二、inline 函数的原创 2012-10-23 22:49:36 · 740 阅读 · 0 评论 -
在单向链表中快速查到倒数第n个节点
在单向链表中如何快速查到倒数第n个节点?操作方法和步骤:(1)定义2个指针p1,p2。(2)使用循环让p2指向顺数第n个节点,同时p1指向第头结点;(3)然后,p1和p2同时移动,直到p2指向NULL,此时p1应该指向倒数第n个节点。iNode * GetLastNnode(iNode * head, int n) { iNode * p转载 2012-11-03 20:14:56 · 5783 阅读 · 0 评论 -
判断一个单向链表中是否有环
写一段代码判断一个单向链表中是否有环 思路:用两个指针,pSlow,pFast,就是一个慢一个快慢的一次跳一步,快的一次跳两步,什么时候快的追上慢的了就表示有环(pSlow == pFast )。实现如下:struct listtype{ int data; struct listtype * next;}list;int find_ci转载 2012-11-03 19:49:51 · 5517 阅读 · 0 评论 -
一次遍历单向链表找到中间节点
一次遍历单向链表找到中间节点具体方法和思想:1)设置2个指针,一个走2步时,另一个走1步;2)那么一个走到头时,另一个走到中间。iNode * GetMiddleNode ( iNode *head ) { iNode *p1 = head; iNode *p2 = p1; while( p2 ) { p2 = p2->n转载 2012-11-03 20:19:30 · 5672 阅读 · 0 评论 -
Windows环境下DHCP的使用
DHCPWindows环境下,DHCP客户端可以使用 ipconfig/renew 命令重新获得IP地址,这时客户机向DHCP服务器发送一个 DHCPDISCOVER 数据包来请求租用IP地址。解析:1)DHCP客户机通UDP 68端口发送DHCPDISCOVER广播信息来查找DHCP服务器。2)当网络中的DHCP服务器接收到DHCPDISCOVER广播时,通过UD原创 2012-11-05 08:56:38 · 1682 阅读 · 0 评论 -
理解C语言中的位域
C语言中的位域有些信息在存储时,并不需要占用一个完整的字节,而只需要一个或几个二进制位即可;比如:在存放一个开关量时,只有0和1两种状态,只需要使用一个二进制位即可存储;为了节省存储空间,C语言提供了一种数据结构,称为"位域"或"位段";所谓"位域"就是把一个字节中的8个二进制位划分为几个不同的区域,并说明每个区域的二进制位数;每一个位域都有一个位域名,允许程序员在程序中按照位域名进行访问;这转载 2012-11-05 22:49:43 · 7901 阅读 · 2 评论 -
日志源代码,删除指定路径所有文件夹名,并创建新的日志文件
#include "stdafx.h"#pragma warning( disable : 4786) // Disable warning messages #include #include #include #include #include #include #include #include #include #include #inclu原创 2016-10-28 09:48:08 · 934 阅读 · 0 评论