blueyi's notes

Follow Excellence,Success will chase you!

0%

关于

使用gccg++编译程序时加上-g参数即可将调试信息加入生成的目标文件,否则使用gdb调试时函数名、变量名都只能显示内存地址。直接运行gdb即可进入gdb,然后输入file a.out即可开始调试a.out,当然也可以直接gdb a.out进入a.out的调试状态。可以使用在命令行状态下使用gdb -help来查看帮助,当然也可以用man。在gdb调试状态下使用help可心获得更强大的帮助,类似vim中的帮助,gdb调试状态下使用help step即可查看单步调试相关的帮助。gdb状态下使用quit退出gdb。进入GDB时可以使用可选参数-tui进入GDB的文本用户界面,该界面可以分屏显示源代码及断点所在行,比使用list查看代码方便很多,而且支持使用上下键来滚动显示代码,此时的命令行历史切换需要使用ctrl+n和ctrl+p。当然有一些支持GDB调试的图形软件ddd和code::block。

GDB基本用法

Read more »

  首先需要清楚数组名是数组首元素的地址,不管是一维还是多维,它是个常量,而指针是个可以存储地址的变量。使用时可以将数组名看成一个常量指针。
  C/C++中没有内置的多维数组,多维数组是数组的数组。例如二维数组就是元素为一维数组的一维数组,此时数组名依然是数组的第一个元素的地址。
具体解释看代码注释及代码的运行结果。
  C/C++中的函数无法返回数组,所以在使用函数操作数组时,只能通过指针或者结构体等方式来间接返回数组,当然可以返回数组名,因为数组是个地址,相当于一个常量指针。具体详解可以看SOF: Return a 2d array from a function

Read more »

C/C++中的二维数组实际上都是以一维数组为元素的一维数组,C++中可以有三种方式申请动态数组:

  • 使用C语言中的malloc分配,free释放
  • 使用C++中的new[]分配,delete[]释放
  • 使用C++中的vector实现

下面分别举例说明:

Read more »

以下为个人理解:
当引用和指针作为参数传递给函数时,函数参数依然是按值传递的方式。指针实实在在就是个指针,它本身是需要占用内存的,只是它可以指向某个变量的地址。所以当将指针作为参数传递时,将传递指针本身的副本,也就是说在函数内部修改指针指向,即对指针赋值只在函数局部生效(注意是对指针变量本身赋值,而不是对其解引用赋值)。但指针所指向的变量就是实实在在的变量,即可以通过指针在函数内部修改指针所批变量的值(即对指针的解引用赋值)。
而引用则是其原变量的别名,可以理解为原变量的真实地址,所以所有对引用的修改,都相当于对原变量直接进行修改。在将其传递给函数时也一样,就是实实在在的地址,所有是否拷贝并不影响,对其赋值就相当于向相应的内存地址中将值写入
下面具体举例说明:

Read more »

一些会比较经常用到的Linux下的工具,当然都是命令行。多数工具需要与正则表达式配合使用,所以可以很多工具使用前都需要先了解正则表达式,正则表达式可以参考这里正则表达式学习笔记

Read more »

一些会比较经常用到的Linux下的工具,当然都是命令行。多数工具需要与正则表达式配合使用,所以可以很多工具使用前都需要先了解正则表达式,正则表达式可以参考这里正则表达式学习笔记

Read more »

一些会比较经常用到的Linux下的工具,当然都是命令行。多数工具需要与正则表达式配合使用,所以可以很多工具使用前都需要先了解正则表达式,正则表达式可以参考这里正则表达式学习笔记

Read more »

一些会比较经常用到的Linux下的工具,当然都是命令行。多数工具需要与正则表达式配合使用,所以可以很多工具使用前都需要先了解正则表达式,正则表达式可以参考这里正则表达式学习笔记

Read more »

面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处是OOP能处理类型在程序运行之前都未知的情况(即通过多态的动态绑定);而泛型编程中,在编译时就能确定类型,只是可以应用于不同的类型,例如vector可以放int,也可以放string等。
既可以定义函数模板也可以定义类模板。

函数模板

1.一个函数模板就相当于一个公式,用来生成针对特定类型的函数版本。模板定义以关键字template开始,后跟一个模板参数列表(template parameter list),多个模板参数需要由逗号分割,使用尖括号包围起来,参数列表不能为空,模板参数表示在类或函数中用到的类型或值,当使用模板时,隐式或显示地指定模板实参(template argument),将其绑定到模板参数上。eg:

Read more »