C/C++
lixiang_inf
移动广告
展开
-
二维数组指针
int a[5][10]={1,2};int (*p)[10]=a;cout<<p<<endl;cout<<p[0]<<endl;cout转载 2014-10-19 09:07:47 · 379 阅读 · 0 评论 -
反转链表
代码#include using namespace std;struct link { int data; link *next;};void reverse(link *head) { if (head == NULL) return; link *cur, *pre = head, *next; pre = head;转载 2015-05-05 21:30:29 · 310 阅读 · 0 评论 -
错误修正
#include#include#includeint main() { char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc(len + 1);//要为\0分配一个空间 char* d = dest; char* s = &src[len - 1];/原创 2015-05-05 21:17:14 · 405 阅读 · 0 评论 -
函数调用过程中,函数参数的入栈顺序
函数调用过程中,第一个进栈的是(主函数中的)调用处的下一条指令(即函数调用语句的下一条可执行语句)的地址;然后是函数的各个参数,而在大多数C/C++编译器中,在函数调用的过程中,函数的参数是由右向左入栈的;然后是函数内部的局部变量(注意static变量是不入栈的);在函数调用结束(函数运行结束)后,局部变量最先出栈,然后是参数,最后栈顶指针指向最开始存的指令地址,程序由该点继续运行。原创 2015-05-05 22:09:09 · 8456 阅读 · 0 评论 -
strcpy函数实现
#include char *strCopy(char *dest, const char *src) { if (dest == NULL || src == NULL) { throw "Invalid argument(s)"; } char *copy = dest; while ((*dest++ = *src++) != '\0');转载 2015-05-05 21:23:42 · 344 阅读 · 0 评论 -
去除重复元素
代码:#include using namespace std;class Solution {public: int removeDuplicates(int A[], int n) { if (n == 0) { return 0; } int index = 0; for (int转载 2015-05-05 21:29:53 · 341 阅读 · 0 评论 -
判断链表是否有环
代码#include using namespace std;struct link { int data; link *next;};bool isLoop(link *head) { link *p1 = head, *p2 = head; if (head == NULL || head->next == NULL) { ret转载 2015-05-05 21:29:08 · 379 阅读 · 0 评论 -
strtok函数实现
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */#include char* strtok(char *s, const char *delim){ const char *spanp; int c, sc; char *tok; static char *last;转载 2015-05-05 21:18:40 · 559 阅读 · 0 评论 -
Inline关键字和虚函数的概念
inline关键字: 用来定义一个类的内联函数,函数的代码块被放入符号表中,在使用时直接进行替换,没有了调用的开销。效率也很高。虚函数:在某基类中声明为virtual 并在一个或多个派生类中被重新定义的成员函数。用途:实现多态性。通过指向派生类的基类指针。访问派生类中同名覆盖成员函数转载 2015-05-05 21:41:48 · 467 阅读 · 0 评论 -
指针类型转换
#include#include#includeint main() { char a[] = "abcd"; int *p = (int *)a; *p = 0x00313200; printf("%s", a); return 0;}字符数组中的前四个字节被一个整型数替代 a=0x00 b=0x32 c=0x31 d=0x00 0x00转载 2015-05-05 21:11:24 · 258 阅读 · 0 评论 -
C++对象的copy constructor与copy assignment的区别与联系
copy constructor:从一个已有的对象来构造另一个对象;包括:用已有对象来初始化新声明的对象;将对象按值传递给函数作为参数;函数按值返回对象。copy assignment:将已有的对象赋值个另一个已有的对象;实例:Person A(B); // copy constructorPerson C=B; //copy constructor转载 2015-05-05 22:17:08 · 5251 阅读 · 0 评论 -
C++中 struct和class的区别
C++的class具有数据封装功能,其包含属性访问级别可以为private,public和protect,还具有实现类接口功能和辅助功能的操作函数,而struct属性访问权限只有public,没有数据封装功能,也就没有实现信息隐藏这一面向对象的思想的机制,struct本身不含有操作函数,只有数据。转载 2015-05-05 22:10:43 · 343 阅读 · 0 评论 -
走台阶问题
楼梯有n个台阶,上楼可以一步上1阶,也可以一步上2阶,一共有多少种上楼的方法?#includeusing namespace std;int fstep(int n){ if (n == 1)return 1; if (n == 2)return 2; if (n >= 3)return fstep(n - 2) + fstep(n - 1); return 0;}int转载 2015-05-08 15:42:02 · 569 阅读 · 0 评论 -
已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。 算法:充分利用出现次数超过一半这个特点,使用两个变量candidate和vote,分别代表候选人和票数,遍历数组按如下方式投票和更换候选人:若当前数与候选人一样,则把候选人的票数加1若当前数与候选人不一样, 则把它的票数减1,如果减掉后票数小于0,则把候选人踢掉,用当前数作为转载 2015-05-08 16:48:50 · 863 阅读 · 0 评论 -
求两个单向链表的交点
代码struct Node{ int data; struct Node * next;}; Node* FixIntersetion(Node* pHead1, Node* pHead2){ Node* p1 = pHead1; Node* p2 = pHead2; int i = 1, j = 1, k = 0, diff = 0; //转载 2015-05-08 15:31:26 · 488 阅读 · 0 评论 -
括号匹配检验 c++
#include#includeusing namespace std; void main(){ int i,invalid = 0; char a[50]; char *s=a; stack st; st.empty(); cin >> a; while(*s!='\0') { if(*s == '['|| *s == '(') st.pus原创 2015-04-13 13:01:15 · 4159 阅读 · 0 评论 -
new/delete 和malloc/free 的区别一般汇总
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/16/2593754.html一、基本概念malloc/free:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。void fre转载 2015-04-02 15:28:56 · 303 阅读 · 0 评论 -
x&(x-1)
小编最近遇到的一个题目,是在面试题当中原创 2014-10-19 09:48:25 · 689 阅读 · 0 评论 -
placement new 的使用实例
#includeusing namespace std;class P {public: virtual void print() { cout << "P"; }};class Q : public P {public: virtual void print() { cout << "Q"; }};int m转载 2015-05-05 21:12:33 · 334 阅读 · 0 评论