- 博客(22)
- 资源 (4)
- 收藏
- 关注
原创 LeetCode 283.Move Zeros
题目描述:Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。样例输入:[0,1,0...
2018-08-27 10:28:06 216
原创 指针值传递、地址传递和引用传递
一、指针的值传递//test.c#include <cstdio>#include <cstring>#include <cassert>void fun(char* p){ p = (char*)malloc(sizeof(char)); assert(p!=NULL); strcpy(p,"hello"); ...
2018-08-26 09:32:40 7209
原创 二维数组的探究
二维数组本质还是一维数组,数组中的每一个元素都是数组,这些元素具有相同的属性。既然是数组类型,其具备两个条件:1.数组元素的个数;2.数组元素的类型 验证二维数组本质是一维数组:void show(int* a,int n){ for(int i=0;i < n;++i){ printf("%d ",a[i]); }}int main(){ ...
2018-08-22 00:17:49 237
原创 数组指针和指针数组
一、数组指针 初学C语言的朋友对数组指针这指针数组感到迷惑,分不清,包括我自己,其实是对概念的不清晰以及对数组和指针这两个概念理解的不够深入,下面谈谈我的理解。 数组指针,是一个指针而不是数组。 这个指针具有指向整个数组的能力,保存这个数组的其实地址。 定义数组指针变量1.先定义数组类型,根据类型定义指针变量typedef int A[5];//A是数组类型。元素类型为int,元素个...
2018-08-21 20:32:50 262
原创 Debug常用命令
一、简单介绍 在windows32操作系统下可以使用debug.exe对可执行文件进行调试,可以看到底层的寄存器之间的数据传输。64位已经不支持运行16的程序,因此想要在64位下完成debug调试可执行程序,需要安装32位模拟器DosBox,详细安装步骤请百度。 二、常用命令 (1)查看寄存器中的内容 -r (2)单步执行 -t 测试代码:assume cs:codec...
2018-08-21 12:42:47 5259 2
原创 Codeup墓地 谁是你的潜在朋友
问题描述: “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭...
2018-08-16 13:18:54 350 1
原创 Hash初步(空间换时间的策略)
问题描述: 给定N个正整数,给定M个正整数。如N = {7,8,2,4},M = {8,2},查找集合M中的正整数是否在集合N出现过。暴力枚举:#include<cstdio>int main(){ int arr[N] = {7,8,2,4}; int brr[M] = {8,2}; for(int i=0;i < N;++i){ ...
2018-08-16 00:12:50 1294
原创 全排列(permutation)
显然,对于具有n个元素的集合R,R={r1,r2,r3…rn},其排列方式有n!种。 如:R = {1,2,3},其全排列如下: 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 从上边的排列中可以看出规律,以集合中某一元素作为第一个数字,集合当中的其余数字做全排列。而其余数字组成的集合可以看作是子集合,子集合中的第一个元素作为第一个数字,子集合当中的其余数字...
2018-08-15 21:38:36 1001
原创 进制转换
P进制数转换为十进制数,采用按权展开相加。int p;//p进制int x;//p进制数字int product=1;//任何权值的0次幂均为1int y;//输出的十进制数字while(x != 0){ y = y+(x%10)*product;//(x%10)获取x的个位数字 product *= p;//获取下一位的权值 x /= 10;//去掉x的个位数...
2018-08-14 23:49:56 162
原创 二分查找的递归和非递归
二分查找的前提是数据有序,二分查找的性能十分优秀。时间复杂度为O(log2n)int binsearch(int arr[],int len,int value){ //low和high指向当前查找区间的两端,value为查找的关键字 int low=0; int high=len-1; int mid=(low+high)/2;//当前区间的中间 ...
2018-08-14 23:08:36 415
原创 使用vs2008编译器自带的命令行工具查看类的内存布局
测试代码:#include<iostream>using namespace std;class Base{protected: int _a;}; class Derive:public Base{public: int _b;};int main(){ return 0;}1.打开命令行工具 2.输入源文件路径 ...
2018-08-14 19:58:35 408
原创 随机点名程序实现
代码:test.cpp#include&amp;amp;lt;ctime&amp;amp;gt;#include&amp;amp;lt;cstdlib&amp;amp;gt;#include&amp;amp;lt;string&amp;amp;gt;#include&amp;amp;lt;iostream&amp;amp;gt;using namespace std
2018-08-14 16:34:34 3991
原创 Linux中查看进程的虚拟地址空间内存布局
要查看一个进程的虚拟地址空间的内存布局,需要设置阻塞。如果设置阻塞,当./a.out按下去后,程序执行的速度非常快以至于来不及查看,所以需要设置阻塞。#include&amp;lt;stdio.h&amp;gt;int a;static int b=10;int main(int argc,char* argv[],char* envp[]){ int a=10;//stack ch...
2018-08-05 11:43:39 7493 2
原创 c和c++的区别 (四)动态内存开辟、c/c++作用域
一、动态内存开辟 C:malloc,free C++:new,delete。new的底层调用任然是malloc,但相对于malloc,new具有初始化的功能。对于内置类型可以直接初始化,对于自定义类型,调用构造函数初始化。delete首先会进行析构,然后调用free。int main(){ 内置类型内存的动态开辟: int* p=(int*)malloc(sizeof(in...
2018-08-05 11:15:48 291
原创 c和c++的区别 (三)const&(引用)和const*(地址)在函数中的应用
int GetInt(){ int value=10; return value;//返回值通过eax寄存器带回}int main(){ int &amp;a=GetInt();//错误 //引用初始化的值要能取地址,寄存器没有地址 修改为:const int&amp; a=GetInt(); return 0;}//不能返回局部...
2018-08-05 00:22:58 502
原创 C/C++函数返回值问题
函数返回值问题 在C/C++中 内置类型:char short int long float double 结构体类型、联合体类型union、枚举类型enum函数返回值分为三种情况: 1.函数返回值小于等于4字节时,返回值由eax寄存器带回。int fun(int a,int b){return a+b;}int main(){ int a=10; int b=1...
2018-08-04 23:28:58 1486
原创 c和c++的区别(二)const和引用、一级指针、二级指针的结合
一、const和一级指针的结合一级指针的模型 一级指针可以有两种表达方式,p和*p。所以const与一级指针有两种结合方式。//在c++语法规则中,const修饰距离它最近的类型。int a=10;int *p=&amp;amp;amp;a;int const *p;//距离const最近的类型是int,而不是int*,因为int已经是类型了//const的是*p,p本身没有被const修...
2018-08-04 09:07:20 684
原创 volatile关键字的使用
MSDN手册中对volatile关键字的解释: 大概的翻译: volatile关键字是一个类型限定符,用于声明一个对象可以通过其他语句(例如操作系统、硬件或并发执行的线程)在程序中进行修改。 volatile关键字的两个功能: (1)防止编译器对汇编指令做顺序上的优化。 (2)防止寄存器存储变量的副本值。 应用在多线程中int gdata=10;//全局变量int ...
2018-08-04 00:10:31 296
原创 C和C++中的const修饰符的全面对比
main.c/*C中的constconst修饰的变量可以不初始化const修饰的量叫常变量,不是常量绝对的常量就是一个立即数,可以作为数组的下标const修饰的常变量和普通变量的唯一区别是:常变量定义以后不能作为左值存在常变量和普通变量的编译方式一模一样同一工程下,可以引用其他文件中定义的被const修饰的全局变量a.c const int gdata = 10;//生成的符号是...
2018-08-02 00:59:47 440
原创 c++ 默认类型的转换
对于C/C++语言来说,在通常情况下语句和表达式的操作通常只使用一种类型的变量和常量。但在实际的开发中,往往会有不同类型的变量之间进行运算,为了满足这样的代码需求,通常在编译器中会设置不同类型自动类型转换,以完成相应的运算。但是如果我们对这样的自动类型转换不熟悉,往往会写出错误的代码,令人摸不清头脑,这种错误往往也是严重的。//测试代码一:#include<stdio.h>i...
2018-08-01 22:12:58 2850 2
原创 c++ typeid().name()输出变量类型
头文件:#include<typeinfo> 在上头文件中定义了typeid()操作符可以输出变量的类型。#include<iostream>#include<typeinfo>using namespace std;int main(){ bool a; char b; short c; int d; ...
2018-08-01 20:03:13 9767 5
LinkedListProblems.pdf
2019-10-29
Effective C++中文第三版高清
2018-08-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人