自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 从汇编层面理解C++ this指针

中,调用对象的非静态成员函数过程中,编译器会自动添加。上述程序,对象在栈上。如果对象在堆上的情况,即通过。指针作为第一个参数传到非静态成员函数中了。指针作为第一个参数。表示第一/二个参数, 然后调用。看了成员函数的汇编, 再看看。申请的对象,可能会有所不同。可以看到, 编译器确实将。其实就是栈顶,也是对象。第6/7条指令,分别将。指针是如何传进来的。函数中是如何调用的。函数中定义了局部变量。, 表示在栈上申请了。

2024-02-02 10:37:02 512

原创 Linux 常用命令

【代码】Linux 常用命令。

2023-08-03 10:11:38 168

原创 关于c++中的编译宏_GLIBCXX_USE_CXX11_ABI

若程序使用了不同版本的库,则会有找不到符号的问题。对象共享内存, 只有在其中一个对象被修改时才会申请新的内存。版本禁用了此项功能。从上节中看到,不同版本的。中的编译宏, 用来控制。这个命名空间以示区别。

2023-04-04 10:48:41 1102

原创 Linux 库文件

静态库在链接时,会将依赖的库编到二进制中,产生的二进制文件比较大。编译构建静态库主文件编译主文件。

2023-03-09 10:21:19 77

原创 由“c++链接错误:未定义的引用“引发的思考

日常的项目开发构建中, 常常出现 未定义的引用的错误。 出现这种错误的原因有很多, 此文描述c++引用c函数导致的问题。示例程序如下:// add.cint add(int a, int b){ return a + b;}// test.cint add(int , int);int main(){ int a = 1; int b = 1; int c = add(a, b); return 0;}编译策略如下:List ite.

2022-05-11 10:23:36 3412

原创 MySQL字符集

第四章4.2 InnoDB 页简介

2021-05-11 22:09:33 84

原创 编译原理

gdb编译多个.o文件// test.cc#include<iostream>using namespace std;int t();int main(){ int x = t(); cout << "x: " << x << endl; cout << "Hello World!" << endl; return 0;}// utils.ccint t(){ return

2021-01-08 08:43:03 118 1

原创 C++容器

容器容器分为关联容器和顺序容器。关联容器set的使用一个简单的例子:#include<iostream>#include<set>using namespace std;int main(){ set<int> s; s.insert(1); s.insert(4); s.insert(9); for (set<int>::iterator it = s.begin(); it != s.end

2020-12-23 19:40:34 99 1

原创 Linux vim编辑器使用方法

大纲查找查找List item\<int 表示查找以int开头的词;int\>表示查找以

2020-12-12 14:45:45 197

原创 Linux多线程

#include <stdio.h>#include <stdlib.h>#include <unistd.h> //Header file for sleep(). man 3 sleep for details. #include <pthread.h>// A normal C function that is executed as a thread // when its name is specified in pthread_cr

2020-08-13 00:27:14 72

原创 C语言知识

const关键字const int *p = &i; // 指针p指向的内容不能通过p被修改int * const p = &i; // 指针p本身的内容无法被修改#include <stdio.h>int main(){ int i = 123; const int *p = &i; // 等价于 int const *p = &i; //*p = 789; // 错误,指针p指向的内容不能通过p被修改 p

2020-08-09 20:31:22 127

原创 编程题目汇总

文章目录DFS473. 火柴拼正方形DFS473. 火柴拼正方形473. 火柴拼正方形int edge_num = 0;int edge_len = 0;bool dfs(int idx, int curr_len, int *nums, int *vis, int numsSize);int cmpfunc (const void * a, const void * b){...

2020-04-14 09:32:15 503

原创 C语言常用库函数

参考:https://www.runoob.com/size_t strlen(const char *str)计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。char *strcpy(char *dest, const char *src)把 src 所指向的字符串复制到 dest。 需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出...

2020-03-01 15:01:44 172

原创 【程序员的自由修养】疑问汇总

问题一:【2.4 模块拼接 -- 静态链接】 一节最后一段中,讲到链接之后,变量var的地址确定下来为0x1000。为什么链接之后var的地址就确定了呢?自问自答:  【1.5 内存不够怎么办】小节中讲到了虚拟内存,是因为可执行程序的虚拟内存都是从0到某个最大值,所以在链接的时候var的虚拟内存其实已经确定了。程序在运行过程中,var的虚拟内存是不会改变的,变更的只是物理内存。因此在链接的...

2018-07-29 15:32:54 143

原创 Java标准输入

在Java中标准输入很简单,但是标准输入没有那么简单,经常用的Scanner类来读取标准输入。 Scanner定义:package java.util;public final class Scannerextends Objectimplements Iterator<String>, Closeable常用的函数nextLine函数public String nextLine()next

2016-02-29 19:47:49 1673

原创 JAVA Stack

在java中,Stack类位于java.util包下,继承Vector类:public class Stack<E>extends Vector<E>Stack类包含了一般栈逻辑相关的方法:public E push(E item)push向栈中添加元素。public E pop()pop是出栈方法,返回栈顶元素并删除栈顶元素,此时栈中元素数目将减少一个。若栈为空时,会发生异常EmptyStack

2016-02-29 16:52:56 397

原创 Leetcode Odd Even Linked List

题意:分组单链表中的奇偶节点,把奇结点置于偶结点之前,奇数结点之间的相对顺序不变,偶数结点之间的相对顺序也不变。注意:是对重新排序结点的顺序,不是针对结点中的数值。方法一图示如下: 初始化奇数结点odd和偶数结点even为链表的第一二个结点执行odd.next = even.next; odd=odd.next; even = even.next;直到链表末尾即可。方法二图示如下: 生成奇数链表

2016-02-20 21:33:44 390

转载 基于比较排序时间复杂度下界

对于nn个待排序元素经过一次比较后,其中两个元素的顺序被确定,所以可能的正确结果剩余n!/2n!/2种;依次类推,直到经过mm次比较,剩余可能性n!/(2m)n!/(2^m)种;直到n!/(2m)≤1n!/(2^m) \le 1时,结果只剩下一种,此时mm为O(nlogn)O(nlogn);根据Stirling’s approximation可知:m=O(nlogn)m = O(nlogn)

2016-01-23 22:31:18 1368

原创 桶排序

桶排序(Bucket sort)是一种排序算法,原理是将数组分到有限数量的桶中,每个桶中的数据再进行排序。当数组元素是均匀分配时,桶排序使用线性时间。桶排序不是基于”比较排序”,所以不受nlognnlogn下限的影响。 基于比较的排序最有时间复杂度为nlognnlogn。 桶排序动画效果参考文献: 桶排序-百度百科 桶排序动画

2016-01-23 21:48:41 401

原创 Testz

这里是标题一这里是标题二这里是标题三

2015-04-02 18:30:31 361

原创 插入排序

插入排序时一种简单直观的排序算法。思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

2015-03-17 20:00:39 364

原创 排序专题

排序动画排序动画归并排序归并排序利用分治思想,其计算步骤如下:分解:将n个元素平均分成各含n/2个元素的子序列; 解决:用归并排序对两个子序列递归地排序;合并:合并两个已排序的子序列以得到结果。比较直观的归并动态图如下: java代码如下:public class MergeSort{public static void main(String args[]){ int[] da

2015-03-13 19:35:16 386

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2015-03-13 18:45:19 380

原创 C语言实现快排

void Qsort( int * p_int, int ll, int hh ){ //对地址为p_int+ll 和 p_int+hh 之间的元素实现快排 if( hh > ll + 1 ) { //当有三个或以上元素时 int low = ll + 1; //以ll处的元素为枢纽 int high = hh; //最高索引 while(

2013-11-14 16:40:35 630

原创 指针的低级错误!铭记!

typedef struct LNode{ int data; struct LNode * next;}LNode, * LinkList;void CreateList1( LinkList &L, int n ){//建立n个元素的链表L L = ( LNode * ) malloc( sizeof( LNode ) ); LinkList L1 = L -> next;

2013-07-15 16:20:41 419

原创 C/C++中include

刚开始学习C语言时候就知道include指令,但是对其含义的理解很多时候是模糊的,其精确含义如下(摘自C++语言程序设计第三版):   指令include可以有两种书写方式。#include表示按照标准方式搜索要嵌入的文件,该文件位于C++系统目录include子目录下,一般要嵌入系统提供的标准文件时采用这样的方式,如对标准头文件iostream的包含。另一种书写为#include"文件名",

2013-07-07 16:00:53 581

原创 解读:《C语言解惑》中的难解的指针

在C语言中,指针和数组有着千丝万缕的关系,也是很核心的内容之一,同时也是最难理解的部分。在 《C语言解惑》一书中有一道关于指针的题目,作者说只要能正确地解答之,便说明已经全面地掌握了C语言中指针的用法。让我们先看看源代码:int main() { char * c[] = { "ENTER", "NEW",

2013-05-24 22:41:45 649

原创 欧几里得算法

今天看到关于求两数最大公约数的帖子,就想起欧几里得算法,但是此算法是怎么证明的呢?一时间还真想不起来了,哎!还是理解的不深刻,现将其证明记录如下,没事时候可以翻翻看。     欧几里得算法又称为辗转相除法,用来计算两个整数(a>b)的最大公约数。    定理:gcd(a,b) = gcd(b,a mod b);    因为a>b,假设a = kb+r, --> r = a mod b;

2013-05-14 23:15:19 556

原创 c++中的错误:error C2601: 'main' : local function definitions are illegal

今天编写一cpp程序,一直编译无法通过,错误是:error C2601: 'main' : local function definitions are illegal。可是怎么看也没有错误,在网上查了老半天终于找到了原因,是头文件的末尾少一个}。而当#include“***.h”时,意思是“***.h”文件中的代码原封不动地放到源文件中,当编译时候就会出现上述错误,说main函数的定义是非法的。

2013-04-28 23:34:38 27019 1

原创 层序输出二叉树

常见的二叉树输出方式是先序,中序和后序;层序输出相对并不常见,先说说我的思想。   二叉树的定义是树中的每个结点至多有两个子树并且有顺序,分别称为左右子树。首先,构造一指针数组并将根节点的地址存入其中(下标为0);若此结点左孩子非空,则将左孩子的地址存入数组(下标为1);同理,若此结点右孩子非空,则将右孩子的地址存入数组(下标为2);对左右孩子施以和根结点同样的动作,重复以上步骤,将会得到相应

2013-04-27 16:38:27 1959

原创 C链表练习时对指针的深刻理解

在做有关链表的练习时,遇到了链表内存错误的问题,最后解决了,在此分享给大家,错误及不足之处,还望大牛们指正。 所作的就是很简单地创建一个链表,并输出其元素,代码如下: 头文件 _List_H.h #include#include#ifndef _List_Htypedef int ElementType ;struct Node;ty

2013-04-05 19:25:24 455

原创 摘自《Data Structures and Algorithm Analysis in C》

学习计算机的学生不学习算法,真的说不过去,学校没有响应的课程,只能自学了,希望能够通过CSDN这个平台和大家讨论问题,能力得到提高,也希望各位大牛不吝赐教。       在许多问题当中,一个重要的观念是:写出一个可以工作的程序并不够。如果这个程序在巨大的数据集上运行,那么运行时间就变成了重要的问题。我们将在本书中看到对于大量的输入,如何估计程序的运行时间,尤其是如何在尚未具体编码的情况下比较两

2013-02-28 21:11:28 415

原创 关于JAVA接口“实例”

今天在看JAVA中如何实现顺序线性表的时候,遇到了点小语法问题,后来解决了,现在写出来一方面便于复习时候看看,另一方面请牛人鉴别我的理解是否正确。      具体的代码如下:           A  a=new B();         其中A为接口,B类实现接口A;记得接口好像是不能创建实例的,看到此不得其解。后来在网上查了查,发现是可以这样的,于是编了个小程序检验是否正确:

2012-10-02 20:38:15 348

原创 我也开博客了

作为一名软工专业的学生,看了些那些it大牛们的博客,有很大的启示。以后我会将自己的观点、技术上的总结及生活中有趣的点点滴滴记录在其中。

2012-01-07 21:00:43 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除