- 博客(76)
- 收藏
- 关注
转载 指针及链表
1.指针6个基本点是什么 指针是一个变量做什么 指针是用来存放地址的大小 sizeof = 4 (64位下 sizeof = 8)指针类型 作用:决定用什么视角看该块内存偏移 按指针的类型偏移加*才有意义2.指针的使用(1)使用指针变量之前确保该指针变量指向一个合法可用的内存单元(2)指针变量与零值比较的问题#define NULL ((vo
2017-01-21 02:13:34
372
转载 C 指针的理解
想想自己曾经学习C语言时,初次见到指针、地址,只能死记硬背,经过一段时间的软磨硬泡,终于有所收获,在此记录自己对C语言中地址、指针的理解。 推荐对C语言有一定理解的程序员阅读。 学习过C语言的程序员们,一定都知道“指针就是地址”的经典描述,到底如何理解指针就是地址。1. 内存长成啥样? 物理内存条由连续排列芯片组构成,在计算机中内存模型也被抽象为一组连续的存储空间,
2017-01-20 09:37:13
373
转载 C语言数组与指针详解
好多同学都说:“老师,我看到指针就晕!”,说实话,见过晕血的,见过晕车的,晕指针的到是第一次听说! 我们先来分析一下晕车的原理,再来对比一下为什么晕指针。 晕车,是因为耳朵里的一个器官对外界的振动太敏感,导致身体调节功能紊乱,系统不能正常工作,轻则,晕点,中则,吐点,重则,“重启”(倒地)。时间长了,知道自己晕车,于是,看到公交车,TAXI,火车,自行车,都
2017-01-20 09:36:08
403
转载 高性能代码编写原则
本文并非讨论类似哪个语言效率最高等无聊的编程语言之争,也不像《effective c》等讲述某个语言的优化问题,本文只是讨论编程习惯对程序性能的影响。如果你是一个农夫,那么给你倚天剑你也只会用来锄地,而且会抱怨效果还没锄头好,如果你是一个高手,即使是摘叶飞花,也可伤敌。所以说什么语言不重要,关键还是看人。这里先介绍一个心得,叫做低代价优先返回原则。 低代价优先返回原
2017-01-17 22:29:22
378
转载 剑指Offer——知识点储备--Linux基本命令+Makefile
剑指Offer——知识点储备–Linux基本命令1.linux下查看进程占用cpu的情况(top);格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参数d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。S:累积模式,会将己完成或消失的子行程的CPU时间累积起来
2017-01-16 19:11:40
451
转载 浅论冒泡排序算法
今天我和大家一起讨论下冒泡排序算法冒泡排序算法,是一种神奇的算法,它是通过将相邻的2个数进行对比,依据从大到小,或者从小到大的顺序进行交换,最后得出排序结果,核心公式是i = n-1,j = n-1-i,i代表要进行多少趟的循环,j代表每趟需要进行多少次两两比较,如果有10个数,那么就只要循环9趟,每趟只需要比较n-1-i次;理论的不说太多,具体如下:例如这里有10个数:15,32
2017-01-15 23:16:19
455
转载 C++中cin>>、cin.get()、cin.getline()、getline()、gets()输入函数详解
C++中cin>>、cin.get()、cin.getline()、getline()、gets()详解 1、cin2、cin.get()3、cin.getline()4、getline()5、gets()6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符
2017-01-15 08:55:53
335
转载 浅论冒泡排序算法
今天我和大家一起讨论下冒泡排序算法冒泡排序算法,是一种神奇的算法,它是通过将相邻的2个数进行对比,依据从大到小,或者从小到大的顺序进行交换,最后得出排序结果,核心公式是i = n-1,j = n-1-i,i代表要进行多少趟的循环,j代表每趟需要进行多少次两两比较,如果有10个数,那么就只要循环9趟,每趟只需要比较n-1-i次;理论的不说太多,具体如下:例如这里有10个数:15,32
2017-01-15 08:55:15
297
转载 C++那些细节--const与函数
一.简介const是C++中灰常灰常强大的关键字。const--constant的缩写,简单理解就是不变的意思,它的所有功能都是限定我们修改某个变量。虽然我们最熟悉的是const常量,但是这并不是const最有用的部分。const和函数碰撞在一起的时候,才能激发出const真正能力。下面看一下const修饰函数本身,修饰函数参数,修饰函数返回值时,都能带来哪些效果。
2017-01-15 08:53:44
403
转载 50道c++面试题
0. static有什么用途?(请至少说明两种)[cpp] view plaincopyprint?1).限制变量的作用域,全局变量加上static之后全局变量的作用域是定义该变量的单个文件,而不加static的全局变量可以被同一个工程中的其他文件引用 2).设置变量的存储域。局部变量加上static之后变量的存储区由栈变为全局区(也可以成为静态区) 1.
2017-01-11 18:47:09
325
转载 C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable
前面我写了几篇关于继承的博文,分别为: c++继承详解之一——继承的三种方式、派生类的对象模型 C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则) C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1) C++继承详解之四——is-a接口继承和has-a实现继承 这几篇博文只涉及到了继承的知识,没有加入虚函数没有涉及到多态的知识,从
2017-01-11 18:46:26
466
转载 C++多态深度剖析
测试环境:Target: x86_64-linux-gnugcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1)什么是多态?多态一词最初来源于希腊语,意思是具有多种形式或形态的情形,当然这只是字面意思,它在C++语言中多态有着更广泛的含义。这要先从对象的类型说起!对象的类型有两种:
2017-01-09 00:33:25
255
转载 有关C/C++指针的经典面试题
有关C/C++指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的...0.预备知识,最基础的指针其实最基
2017-01-08 00:17:59
340
转载 C++词汇集锦编程人必备
C++词汇1. 保留字 C++中,保留字也称关键字,它是预先定义好的标识符。见关键字的解释。2.关键字 C++中已经被系统定义为特殊含义的一类标识符。C++中的关键字有:autodoubleintstructbreakelselongswitchcas
2017-01-06 21:47:43
1413
转载 继承----C++的三大特性之一
一,为什么要引入继承? 继承是一个非常自然的概念,现实世界中的许多事物也都是具有继承性的。例如,爸爸继承爷爷的特性,儿子又继承爸爸的特性等都属于继承的范畴。下面是一个简单的汽车分类图:在这个分类图中建立了一种层次结构,最高层是最普遍,最一般的,每一次都比它上一层的更详细,更具体。其中把上一层的叫做基类(或父类),紧接着基类的下一层叫做
2017-01-05 23:07:41
280
转载 Eclipse for c/c++开发环境搭建
默认机器上装了visualstudio 2010以上的版本(2010以下的版本本人没试过)。1、 下载Eclipse for c/c++版本的IDE,这样就不用再装CDT插件了,下载以后解压直接打开Eclipse.exe。2、 在使用之前需要配置下环境变量,我看有些是装了vs后再装Eclipse可以直接用,但是我的不行,不知道什么原因。经过逐步排查,环境变量没配置,vs的环境变量我
2017-01-04 23:12:38
996
转载 深入函数
前面一篇我们介绍了结构体,这篇终于能够介绍函数了。为什么这么说呢?因为函数非常重要。就这么简单。嘿嘿!之所以在这时才讲函数,是因为本篇将联系到前面的每一篇,这样函数才能体现的透彻。那我们就迫不及待的切入正题。 从第一篇Helloworld开始到现在,就没有脱离函数。那就是我们的main函数。main函数也是一个普通的函数,只不过通常把它作为我们写的程序的入口。也就是说我们就当它最先
2017-01-03 23:38:51
261
转载 指针
前言:C指针可以这么学。 在很多初学者而言,C/C++指针是一场灾难。C作为底层编程语言的首选,得益于其灵活的指针,使程序员在极大程度上可以直接操控内存,这在比如操作系统的实现上显得必不可少。然而过于灵活的指针有着让人担忧的另一面,不当的使用指针访问未定义空间引发不可知错误,篡改系统安全空间导致系统瘫痪等隐患,犹如挥之不去梦魇。 Java语
2017-01-02 23:39:27
291
转载 彻底解密C++宽字符
1、从char到wchar_t“这个问题比你想象中复杂”从字符到整数char 是一种整数类型,这句话的含义是,char所能表示的字符在C/C++中都是整数类型。好,接下来,很多文章就会举出一个典型例子,比如,'a'的数值就是0x61。这种说法对吗?如果你细心的读过K&R和BS对于C和C++描述的原著,你就会马上反驳道,0x61只是'a'的ASCII值,并没有任何规定C/
2016-12-31 15:41:31
553
转载 【C解析之四】指针
前言:C指针可以这么学。 在很多初学者而言,C/C++指针是一场灾难。C作为底层编程语言的首选,得益于其灵活的指针,使程序员在极大程度上可以直接操控内存,这在比如操作系统的实现上显得必不可少。然而过于灵活的指针有着让人担忧的另一面,不当的使用指针访问未定义空间引发不可知错误,篡改系统安全空间导致系统瘫痪等隐患,犹如挥之不去梦魇。 Java语
2016-12-30 23:25:11
268
转载 C/C++中static,const,inline三种关键字详细总结
以下是对C/C++中static,const,inline的三种关键字进行了详细的分析介绍,需要的朋友可以过来参考下一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。static 的两大作用:一、控制存储方式 static被引入以告
2016-12-30 00:01:23
399
转载 非常实用全面的 C++框架,库类等资源
这次的资源涉及到了标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等,C++程序员学习必备!Jasonfrozen : C/C++的Jason解析生成器Jansson :进行编解码和处理Jason数据的C语言库jbson :C++14中构建和迭代BSON data,和Json 文档的库JeayeSON:非常健全的C++ JSON库,只包含头文件J
2016-12-28 22:47:11
387
转载 数据类型、运算符、表达式
数据类型、运算符、表达式数据类型、运算符、表达式C语言的数据类型 在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面:·数据类型·存储类型·作用域 在本课中,我们只介绍数据类型说明。其它说明在以后各章中陆续介绍。所谓数据类型是按被说明量的性质,表示形式,占据存储空间的多少,构造特点来划分的。在C语
2016-12-27 23:35:59
577
转载 C库函数手册
分类函数,所在函数库为ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASC
2016-12-26 23:16:43
320
转载 C++经典类库
现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。本文为你介绍了十一种类库,有我们常见的,也有不常见的,一起来看。AD:2013大数据全球技术峰会低价抢票中如果你有一定的C基础可能学起来比较容易些,但是学习C++的过程中又要尽量避免去使用一些C中的思想;平时还要多看一些高手写的代码,遇到问题多多思考,怎样才能把问题抽象化,以使自己头脑中有类的概念;最
2016-12-25 23:11:02
511
转载 scanf和Linux C中的gets函数警告
在C语言中,字符数组的输入有两种方法: ①逐个字符输入 ②一次性输入整个字符串1.逐个字符输入 使用“%c”,例如: 2.一次性输入整个字符串 使用“%s”,例如: 需要注意的是,在这里定义的str数组的长度为10,则输入的字符串的长度应小于定义的长度10.若输入hello,则系统自动在输入的hello后面加一个’\0’
2016-12-24 23:48:54
303
转载 C 中scanf ( ) 函数用法 用法
我觉得,在输入输出函数中,scanf()函数,应该是最麻烦的,有时它给我们的结果很可笑,但是一定是一原因的....首先声明一下,这篇日志不是介绍scanf()中各种格式符用法的文章(没有这个必要,但是大家一定要会用).我尝试了很多种输入,包括一些错误的练习,曾经对scanf()由迷茫转向清醒,又由清醒再次转向迷茫......不知道何时是个尽头,谁让C如此高深呢?在这里贴出来
2016-12-23 23:40:20
857
2
转载 关于#define与C的内存
看过C部分#define的视频教程油然而生的两个问题:问题1:#define到底存在程序的哪个区?自己写了一个小程序验证一下第一个问题。程序代码:#include #include #define kMAX 100typedef struct { int ID; char * name;}Student;void test(){ return;}
2016-12-22 23:15:50
2079
转载 C 预处理器
gcc/cc xxx.c 可以编译链接C源程序生成一个可执行文件 a.out整个过程中可以划分为以下的4步流程:(1)预处理/预编译: 主要用于包含头文件的扩展,以及执行宏替换等 //加上 -E(2)编译:主要用于将高级语言程序翻译成汇编语言,得到汇编语言 //加上 -S(3)汇编:主要用于将汇编语言翻译成机器指令,得到目标文件 //加上 -c(4)
2016-12-21 23:33:26
359
原创 Union和Struct
联 合(union) 1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。下例表示
2016-12-20 23:59:38
353
转载 结构、联合、位字段、枚举
结构结构体在声明的时候并没有分配任何的内存资源,只有定义了结构体变量才会产生相应的内存分配。typedef和#define的区别#define仅仅是做简单的替换,而typedef是给某种数据类型创建一个替代名。 看这样的例子:#include #define charP char*int main(){ charP s1="I love you.", s
2016-12-19 23:32:47
656
转载 C语言中.h和.c文件解析(很精彩)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当
2016-12-18 23:22:26
981
转载 黑马程序员_一个小程序的发现-关于#define与C的内存
看过C部分#define的视频教程油然而生的两个问题:问题1:#define到底存在程序的哪个区?自己写了一个小程序验证一下第一个问题。程序代码:#include #include #define kMAX 100typedef struct { int ID; char * name;}Student;void test(){ return;}
2016-12-17 23:42:08
294
转载 C 中scanf ( ) 函数用法
我觉得,在输入输出函数中,scanf()函数,应该是最麻烦的,有时它给我们的结果很可笑,但是一定是一原因的....首先声明一下,这篇日志不是介绍scanf()中各种格式符用法的文章(没有这个必要,但是大家一定要会用).我尝试了很多种输入,包括一些错误的练习,曾经对scanf()由迷茫转向清醒,又由清醒再次转向迷茫......不知道何时是个尽头,谁让C如此高深呢?在这里贴出来
2016-12-16 23:28:45
413
转载 C/C++ 学习笔记:字符串、数组相关
C/C++ 中所有字符串字面值都由编译器自动在末尾添加一个空字符,即默认以 \0 结尾。eg:字面值 "tang" 实际上是 "tang\0",字面值"tang\0" 实际上是"tang\0\0"char 数组char StrArray[4];// 如果数组 StrArray 不是全局变量,内容是随机的。char StrArray
2016-12-15 23:43:12
261
原创 《c和指针》(二)
一、char类型有无符号取决于编译器的实现 在Linux gcc下测试发现gcc编译器将char类型实现为了有符号的,范围为-128~127。arm-linux-gcc将char实现为了无符号的,范围0~255。mipsel-linux-gcc将char实现为有符号的,范围-128~127。测试方法:定义一个char类型变量,并且用一个最高位为1的字面值常量将其初始化,然后比较该变量和该字面值常
2016-12-14 18:58:56
247
转载 C语言数组与指针详解
好多同学都说:“老师,我看到指针就晕!”,说实话,见过晕血的,见过晕车的,晕指针的到是第一次听说! 我们先来分析一下晕车的原理,再来对比一下为什么晕指针。 晕车,是因为耳朵里的一个器官对外界的振动太敏感,导致身体调节功能紊乱,系统不能正常工作,轻则,晕点,中则,吐点,重则,“重启”(倒地)。时间长了,知道自己晕车,于是,看到公交车,TAXI,火车,自行车,都
2016-12-13 23:09:15
271
转载 获取命令行参数的各种变化
常,在VC++中获取命令行参数的有如下几种方式: 在控制台程序中:C++运行时库通过入口函数main传递进来的参数int argc 和 char* argv[]。其中第二个参数将一个完整的命令行分割成指向各参数的字符串指针数组,数组中的每一个元素是一个指向参数的字符串指针。其中, argv[0] 指向应用程序名自身。如果想获得像窗口形式的完整命令行参数CmdLine
2016-12-12 22:15:52
1430
原创 《c和指针》(一)
一、ANSI C标准之“三字母词” 三字母词就是三个字符的序列合起来表示另一个字符。ANSI标准并没有规定C环境使用的字符集,但是C编译器所使用的字符集必须包括某些特定的字符,如果你使用的字符集缺少某些字符,可以使用三字母词替代。三字母词以两个“?”开头,后面再接一个字符,例如 : ??( [ ??) ] ??< { ??> } ??/ \ ??- ~ ??! | ??= # ??’
2016-12-11 23:30:09
282
原创 远指针和近指针,巨指针
char near p; /定义一个字符型“近”指针*/ char far p; /定义一个字符型“远”指针*/ char huge p; /定义一个字符型“巨”指针*/首先要从8086处理器体系结构和汇编渊源讲起。大家知道,8086是一个16位处理器,它设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;S
2016-12-10 22:07:37
824
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人