自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 问答 (17)
  • 收藏
  • 关注

转载 C++学习笔记 函数重载

C++函数重载详解我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬。所以有时候就为了开个瓶,家里要备多种规格的开瓶器。同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开。然而开瓶器的问题也会发生到程序设计中。比如我们要编写一个函数来求一个数的绝对值,然而整数、浮点型数、双精度型数都有绝对值,但为它们编写

2017-02-26 22:23:19 387

原创 C++类中成员变量的初始化总结

1. 普通的变量:     一般不考虑啥效率的情况下可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA { public: int data; public: CA(); }; /*********/ CA::CA():data(0) //……#1……初始化列表方式{ //data = 0;//……#

2017-02-25 22:10:58 539

转载 函数的默认值与带默认参数的函数

我们可以赋予函数参数默认值。所谓默认值就是在调用时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。默认值可以在声明或定义中设置;也可在声明或定义时都设置,都设置时要求默认值是相同的。  关于默认值要注意几点:  1.若在定义时而不是在声明时置默认值,那么函数定义一定要在函数的调用之前。因为声明时已经给编译器一个该函数的向导,所以只在定义时设默认值时,编译器只有检查到定

2017-02-24 22:00:46 1367

转载 C++学习笔记 c++引用(&)与指针(*)的区别

c++引用(&)与指针(*)的区别(着重理解) ★ 相同点:    1. 都是地址的概念;    指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。    ★ 区别:    1. 指针是一个实体,而引用仅是个别名;    2. 引用使用时无需解引用(*),指针需要解引用;    3. 引用只能在定义时被初始化一次,之后不可变;指针可变;   

2017-02-23 22:23:06 755

原创 C++学习笔记 内存空间分配(new/delete)

C++动态分配内存(new)和撤销内存(delete)在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。注意: new和delete是运算符,不是函数,因此执行效率高。虽然为了与C语言兼

2017-02-22 21:46:46 456

原创 C++学习笔记 C和C++中的const关键字

一.C语言中的const    const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码的阅读时增加一定的难度。   (1)用const修饰一般变量       注意在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外);

2017-02-21 22:36:28 160

原创 C++学习笔记 从C到C++的升级(1)

从C到C++的升级(1)C:面向过程=数据+算法C++ = C+面向对象思想面向对象:对象+消息C++优点:维护性,复用性,扩展性,灵活性C++特点:封装    ,继承   ,多态    ,抽象从C到C++的升级:1.声明定义C++所有的变量都可以使用时才定义:for(int i = 0;i {...}变量i在使用完成后自动释放,但是C语言不行

2017-02-20 22:28:53 263

原创 Linux C笔记 (3)

1. 无缓冲文件:(系统调用)直接从内核获取    有缓冲文件:(库函数)用户空间和内核空间 生成了缓冲区,把内核数据写入缓冲区,调用函数从缓冲区获取,以此来减少对内核的访问    首先无缓存只不过是指在用户层没有缓存,但对于内核来说,还是进行了缓存    如果你想要写数据到文件中(即硬盘中),内核先将数据写入到内核中所设的缓冲储存器(write()系统调用),等缓冲器满的时候再真正写

2017-01-20 22:02:56 187

原创 Linux C笔记(2)

有缓冲访问文件(库函数)1.FILE *fopen(const char *path,const *mode);所需头文件:#include功能:打开一个名叫path的文件,文件的属性为mode返回值:文件顺利打开后,指向该流的文件指针就会被返回;若果文件打开失败,则返回NULL,并把错误代                 码存在errno中2.int fclose(F

2017-01-18 23:33:32 148

原创 Linux C笔记(1)

操作系统的定义:操作系统(Operating System,简称OS)是管理和控制计算机 硬件  与 软件  资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让

2017-01-17 22:23:31 216

原创 C语言笔记(6)

这个形参包括了传入参数和传出参数;  传入参数:就是数值的传递。在函数中不会修改这个参数,不会修改调用这个函数的函数的值。  例如  void exchange(int a,int b){   int temp;   temp = a;   a = b;   b = temp;}  int main (){    int a =4;    int

2016-12-10 19:25:51 244

转载 exit 与 return

原贴地址:点击打开链接1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结

2016-12-10 18:34:07 211

转载 二维数组传参做形参

二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型。正确的是:void Func(int array[3][10]); void Func(int array[][10]);可以省略第一维的大小错误的是void Func(int array[][].

2016-12-08 20:58:22 331

原创 C语言笔记(5)

int func(char *ptr ,char *p[ ]);int func(char *ptr, char **p);     等价看到**p,要注意:1.可能传指针数组2.可能串指针的地址回调函数:void func(int (*p_func)(int,int))函数作形参此函数被称为回调函数作用:可以增加代码的扩展性和维护性函数名也

2016-12-08 20:31:24 157

转载 带参数的主函数

原贴地址:点击打开链接                                                                                                                       一般情况下(许多教科书中都没有说明),我们在写程序的时候,往往忽略了主函数的参数,例如:int main(){     

2016-12-06 22:00:59 467

原创 指针与数组的区别

分配空间上:设一个指针变量p 如果不初始化,p 会随机指向一个内存空间这种指针被称为野指针。而野指针会造成内存泄漏的问题这是必须要避免的。malloc calloc realloc使用:p = q;(q指向一段空间)这没有分配空间,只让p这个指针变量 = q使用:p = (char *)malloc(100*sizeof(char));这是分配空间数组空间分配分为动态分

2016-12-06 19:28:13 163

原创 C语言笔记(4)

二维数组int main (){    int aa[2][2]={1,2,3,4};}aa为一个二维数组可知:aa[i][j]aa+i:第i+1个一维数组的地址*(aa+i):第i+1个一维数组的首元素地址*(aa+i)+j:第i+1个一维数组的第j+1个元素的地址*(*(aa+i)+j):第i+1个一维数组的第j+1个元素的值aa:首个一维数组的

2016-12-03 23:27:35 173

转载 C语言malloc和free实现原理

原贴地址:点击打开链接以下是一段简单的C代码,malloc和free到底做了什么?int main()  {      char* p = (char*)malloc(32);      free(p);      return 0;  }  malloc和free的debug和release版本实现各不相同,而且相差很大。Debug版本ma

2016-12-02 22:39:24 358

转载 C语言中malloc函数返回值是否需要类型强制转换问题

原贴地址:点击打开链接1. 在C语言中, 如果调用的函数没有函数原型, 则其返回值将默认为 int 型.考虑调用malloc函数时忘记了 #include 的情况此时malloc函数返回值将为 int 而不是void * (这是C语言的规则, 所有没有函数原型的函数返回值都为int), 此时如果在程序中有如下语句[cpp]int *p =  malloc(10); int

2016-12-01 21:40:37 605

转载 如何避免野指针

何为野指针?野指针就是,没有被初始化的指针,会由系统默认一个随机地址的指针。如果不小心使用的野指针,易造成内存泄漏的段错误。给我们的程序造成一定的破坏。那么,我们该如何避免野指针呢?首先,我们该养成一些良好的编程习惯。1、当指针没有指向的地址空间是,初始化为空。这样可以引起程序员调试时的注意程度。2、当往指针指向的空间赋值时,一定要检查是否有给这个指针分配空间。如果

2016-11-30 22:47:15 196

转载 C/C++ 野指针

原贴地址点击打开链接一、莫名的恐惧感        对于指针确实有种莫名的恐惧感,从刚开始学习的时候就被老师灌输的概念是指针功能很强大,但是用得不够好,会有很大的副作用。什么叫用得够好?初学者谁都不会用,那且不是都不能用了?如果都这样,指针都没人用了,还要指针做什么?        陷入了上述困局的原因在于我们的这种莫名的恐惧感,指针如此之神秘,以至于如我一样大多数的人都望而生畏,无所

2016-11-29 19:50:51 220

原创 C语言笔记(3)

printf 格式化输出printf需要行缓冲完毕才能输出所以 printf("   ............\n ")或printf("............\r");另外prntf与scanf 共用同一个缓冲区printf("%s:%d\n",__func__,__LINE__);打印当前函数行号printf打印是字体和背景带颜色的输出的方法:格式如下: 

2016-11-28 22:09:36 128

原创 C语言笔记(2)

变量的三大特点:1.变量的数据类型:主要说明变量占用内存大小2.变量的作用域:变量的有效性范围3.变量的存储类型:变量在内存中的存储方式。不同的存储方式,影响变量的生命周期硬盘与内存的区别1.速度:内存中读写数据的速度非常快,DDR3内存写入速度可达到15G字节每秒(15000000000字节每秒)以上,读取的速度就更高了;而SATA3接口的硬盘写入速度能达到300M字节每

2016-11-27 21:54:15 134

转载 scanf 的格式化输出

原贴地址:点击打开链接 scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#include。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。[编辑本段]scanf函数的一般形式  scanf(格式控制,地址表列)  int scanf(char *for

2016-11-26 22:42:51 165

原创 C语言笔记(1)

字与字节不同系统的字的定义可能不一样,字节长度与编译器有关 bit 位字节 = 8bit字    = 4字节 = 32bit半字 = 2字节 = 16bitint       4字节char    1字节double 8字节float    4字节short   2字节long    4字节注意:指针都是4字节sizeof( ) 与 strlen

2016-11-26 10:35:59 160

原创 C语言问题(1)

调用mallocmalloc()函数其实就在内存中找一片指定大小的空间,然后将这个空间的首地址范围给一个指针变量,这里的指针变量可以是一个单独的指针,也可以是一个数组的首地址,这要看malloc()函数中参数size的具体内容。我们这里malloc分配的内存空间在逻辑上连续的,而在物理上可以连续也可以不连续。yi因为计算机会处理剩余的问题。(分配类型 *)malloc(分配元素个数 *

2016-11-24 22:21:03 238

转载 位运算

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符含义描述& 按位与      如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或      两个相应的二进制位中只要有一个为1,该位

2016-11-23 22:24:49 169

转载 二维数组与指针

原贴地址:点击打开链接   二位数组,数组指针,指针数组,指针的指针。这四者之间的关系希望大家看完这篇文章后在也不会分不清楚了。在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述方便才叫它二维数组。以前认为二位数组是一个二级指针,现在

2016-11-22 21:34:19 235

转载 C89 和 C99 标准比较

转载原贴地址:点击打开链接 1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。如果某个函数定义了两个res

2016-11-21 22:19:09 229

原创 我的课后作业分析(1)

数据类型:int *( *( *arr[5])())();  arr[5]是一个数组,有5个元素        *arr[5]是一个数组,有5个元素,每个元素都是一个指针( *arr[5])()是一个数组,有5个元素,每个元素都是一个指针,指向一个没有形参的函数*( *arr[5])()是一个数组,有5个元素,每个元素都是一个指针,指向一个没有形参的函数,函数的返回值是一个指针

2016-11-20 22:28:31 326

原创 计算机语言 学习小结

常见语言及其应用方向C:1.内核程序员 (为特定产品定制内核,你可能需要在一个稳定版本的内核基础上增加一些内容以满足公司产品的需求)           内核是指操作系统的内核,因为大多数操作系统的内核都是由C语言来实现的。因此C语言有着较高的可移植性        2.驱动软件设计        3.应用程序设计 C++:        1.客户端开发,比如目前很多游

2016-11-19 22:08:24 253

原创 vim 常用操作

命令描述vim从控制台进入vi编辑器vi filename创建名为filename的文件并进入vi编辑器命令行模式 i从光标所在字符前插入a从光标所在的字符后插入o从光标所在行的下面插入空白行I从光标所在行的

2016-11-18 22:45:11 151

转载 大数乘法(C语言版)

我们先用一个小数来模拟大数:如:123*12用数组操作就是这样的。先将2分别和1 2 3相乘,得到2 4 6,保存在5 4 3中。然后用1分别与1 2 3相乘,得到1 2 3分别增加进2 3 4中。len1 = 3   len2 = 2  len3 = 5    所以我们用6个数组空间来模拟乘法的进行过程:#include #include int main(){ int i

2016-11-17 20:54:44 329

原创 Linux开发工具学习笔记4

一个完整的工程文件结构可以通过#tree 这个命令查看比如|-- Makefile|-- add|  |-- Makefile|  `-- src |      |-- add.c|      `-- add.o|-- cal|-- div|  |-- Makefile|  `-- src|

2016-11-16 22:05:27 152

原创 Linux开发工具学习笔记3(未完)

工程管理器 - makeMake是工程管理器,是一种可以提高编译效率的可以实现自动编译的工程管理器。  Make实现自动编译主要体现在以下两点:     ①按照Makefile的编译规则。    ②通过检查时间戳检查文件是否被修改,没修改则不会被编译  Makefile文件是脚本文件,需要使用脚本语言。脚本一般用来实现批处理,脚本语言一般做测试用。  Makefile三元素

2016-11-15 21:39:43 164

转载 分享 gdb list 功能

原贴地址点击打开链接先贴一下我用来示范的程序,我们主要通过这段代码来step by step地学习gdb的使用.如果你想花15分钟学习,这不是你应该用的;如果你只是想对gdb有个简单的了解,这也不是你想要的; 如果你想对gdb有一个基本而全面的了解,这就是你想要的.1 #include 23 int func( int n )4 {5     int sum = 0,

2016-11-14 20:16:39 301

原创 Linux开发工具学习笔记2

调试器 -gdb首先需要编译才能成功才能使用调试器#gcc -g XXX.c -o XXX 编译一个可执行文件#gdb XXX   (可执行文件)一些基本指令:(gdb) run                      运行程序           list                      查看代码     list 数字  显示该行内容         

2016-11-13 21:57:56 123

原创 Linux开发工具学习笔记1

Linux开发工具1.Linux编译器-gcc2.Linux调试器-gdb3.Linux工程管理器-make4.Linux脚本语言 -shellgcc1.gcc 能编译多种语言例如:c,c++, Object c,Java,Ada等 属于交叉平台编译器(交叉编译:简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系

2016-11-12 22:41:13 219

转载 c语言字符数组与字符串的使用详解

原帖地址点击打开链接1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那

2016-11-11 22:57:49 369

原创 浅谈 指针与数组的关系

C语言中指针和数组有着极其密切的联系。数组名是指针常量,它代表的是数组首地址。若data是一维数组,则data与&data[0]等价,C语言又进一步规定data + i == & data[i]。对 data + i == & data[i]两边同时取内容运算得* (data + i) == *(& data[i])即 *(data + i) == data[i]例如采用三种方

2016-11-10 19:49:50 289

空空如也

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

TA关注的人

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