7 FIRE_TRAY

尚未进行身份认证

生命在于折腾

等级
TA的排名 2w+

C 函数值传递和指针传递的效率问题

C函数值传递和指针传递的效率问题C中有两种传递,值传递和指针(地址)传递。值传递需要把数据的一份拷贝传递入函数形参表,并存储在栈中,函数返回后弹出栈,拷贝被删除。而指针传递则不然。如果形参表是指针,那么函数在执行时会直接去指针指向的地址中获取此数据并操作,而不用直接拷贝。看下这个例子:constintARRAY_SIZE=20;typedefstruct{longlong

2016-05-14 17:02:21

Java GC 日志格式理解小结

JavaGC日志理解小结下面以一个典型的GC日志做分析:33.125:[GC[DefNew:3324K->152K(3712K),0.0025925secs]3324K->152K(11904K),0.0031680secs]100.667:[FullGC[Tenured:0K->210K(10240K),0.0149142secs]4603K->210K(19456K

2016-05-13 19:40:05

JVM的几种垃圾收集器

JVM的几种垃圾收集器Serial收集器基本原理:新生代收集器,采用标记复制算法它是一个单线程收集器,只会使用一个CPU和一条收集线程完成GC。缺陷:在于它“Stop-The-World”的收集方式。进行垃圾收集时必须暂停其他线程的所有工作优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做GC反而效率更高。适用场景

2016-05-13 17:20:02

C strpbrk 查找任意几个字符

Cstrpbrk查找任意几个字符头文件string.h函数原型char*strpbrk(charconst*str,charconst*group);返回的是字符集合group中任意字符在str中第一次出现的位置(最左面的)。同样,函数返回的是指向此位置字符的指针。注意事项注意匹配的是group中任意一个字符,而且区分大小写。看下代码就明了了:intmain(){cha

2016-05-13 11:15:46

C strchr strrchr查找一个字符

Cstrchrstrrchr查找一个字符头文件string.h函数原型char*strchr(charconst*str,intch);char*strrchr(charconst*str,intch);注意事项返回值的类型注意返回的不是一个整数index,而是一个指向字符的指针。看代码:intmain(){char*string="abcde";

2016-05-13 11:04:43

C 可指定长度的字符串函数

C可指定长度的字符串函数头文件string.h函数原型char*strncpy(char*dst,charconst*src,size_tlen);char*strncat(char*dst,charconst*src,size_tlen);intstrcmp(constchar*s1,constchar*s2,size_tlen);后面len可指

2016-05-13 10:46:55

C strcmp 字符串比较

Cstrcmp字符串比较头文件string.h函数原型intstrcmp(constchar*s1,constchar*s2);返回的是一个int。注意事项注意比较的结果是依照字典序确定的:如果s1<s2,也就是s1的字典序排在s2的前面,返回-1如果s1=s2,也就是两者字典序相同,也就是为同字符串,返回0如果s1>s2,也就是s1的字典序排在s

2016-05-13 09:38:58

C strcat

Cstrcat头文件string.h函数原型char*strcat(char*dst,constchar*src);返回的是第一个参数dst的拷贝。用于拼接字符串。注意事项dst的空间约束dst必须有足够的空间保留之前已经有和要拷贝进来的字符串。正确的使用案例:#include<stdlib.h>#include<string.h>#include<stdio.h>chars

2016-05-13 09:17:33

C strcpy

Cstrcpy头文件string.h函数原型char*strcpy(char*dst,constchar*src);返回的是第一个参数dst的拷贝。注意事项dst的约束由于dst参数将进行修改,所以它必须是一个字符串数组或者一个指向动态分配内存的数组指针,不能是字符串常量,而且必须保证有足够的空间。代码举例:这样是可以的char*src="***";charstrin

2016-05-12 16:59:55

C strlen

Cstrlen返回值注意事项基础知识头文件string.h函数原型size_tstrlen(charconst*string);这个size_t是在头文件stddef.h中定义的,是一个unsignedlong类型。注意事项注意它的返回值,是一个无符号整数类型(可能为unsignedint或者unsignedlong)。下面的代码就会因此产生问题:/***两个无符号整型相减

2016-05-12 16:01:20

C 数组基础知识分析

C数组基础知识分析数组名含义一言以蔽之,数组名就是一个指向比其所在维度低一维的东西的指针。让我们再深入的分析一下一维数组比一维再低一维的就是元素。因此,一维数组名就是一个指向所存元素类型的指针。且其值为首元素地址。如果有inta[10],那么这个a就是一个指向整型的指针,且指向首元素a[0],且其值等于&a[0]。多维数组比多维再低一维的还是数组。因此,多维数组就是一个指向低一维度的数组的指针

2016-05-12 11:22:21

HotSpot GC 具体实现关键点概要

HotSpotGC具体实现关键点概要GCroots枚举过程枚举过程的困难点:范围大:GCroots主要在全局性的引用(常量与静态变量)和执行上下文(如栈帧中的本地变量表)。现在程序仅仅就方法区而言就很大,程序整体体积更是不用说。如果要注意检查这些引用,如查看所有栈帧中的本地变量表,那么时间上肯定是无法接受的。必须在快照中进行:在枚举过程中,不能出现程序运行。因为这会导致GCroot

2016-05-05 10:12:24

Java 垃圾清理基础理论

Java垃圾清理基础理论标记-清除算法基本原理先标记需要回收的对象,然后回收被标记的对象。标记过程标记过程(对象的死亡至少要经历两次标记):首先,如果发现对象从GCroot出发不可达,那么就会被第一次标记并进行筛选。筛选条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被执行过了,则会被判定为“没有必要执行”。在确定对

2016-05-05 09:56:11

C 可变参数的使用

C可变参数的使用C中的可变参数需要使用stdarg.h头文件。此头文件中声明了一个类型va_list和三个函数——va_start、va_arg和va_end。让我们先看一个求均值函数的实现,看看C中可变参数是如何使用的。样例代码#include<stdio.h>#include<stdlib.h>#include<stdarg.h>floataverage(intcount

2016-05-04 17:52:07

C ADT 的实现

CADT的实现C也可实现ADT。主要是利用static关键字。static可将被修饰者的作用域限定到文件中,此文件以外则不可对它进行访问。笔者这里实现了一个简单的链表,可以参考下:NameList.c#include<stdlib.h>#include<stdio.h>staticconstintMAX_PEOPLE_NUM=100;staticchar*data[MAX_PE

2016-05-04 16:39:08

JVM 方法区回收小结

JVM方法区回收小结方法区也会发生垃圾回收,只是效率和性价比较低。回收主要分为两部分内容:废弃常量和无用的类。废弃常量的回收这与堆中对象的回收类似。以常量池的字符串为例,如果没有任何对象引用了此字符串,那么它就有可能被系统清理出常量池。废弃类的回收此类回收条件较为苛刻,需要满足如下的3点:该类所有实例已被回收,即Java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对

2016-05-02 20:23:48

关于指针的小杂碎

关于指针的小杂碎关于指针的一些小点,这里简单整理下间接取值(指针解引用)的含义根据指针找内容的过程被称为:间接取值或指针的解引用NULL与0的关系NULL在外部表现为0。为指针赋值NULL,等价于为指针赋予0。用代码验证下:int*p=NULL;printf("%d",p);//0printf("%d",NULL==0)//1但是,就内部实现而言,NULL值可能并非0

2016-05-02 16:15:08

C 运算符优先级与记忆口诀

运算符详情表优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员

2016-05-01 20:16:21

C 的布尔值

C的布尔值基本原理C中并没有像Java中true和false中那种显式的布尔类型,整型担任了此重任。原则就是:0为假,任何非0值为真代码验证#include<stdio.h>#include<stdlib.h>voidprintLine(char*s){printf("%s\n",s);}intmain(){if(-1){printLin

2016-05-01 15:37:11

C 逗号运算符

C逗号运算符语法格式exp1,exp2,exp3,...,expN;执行效果运算符中每个表达式exp(i)都会被计算,且整个逗号表达式的最终结果为最后一个表达式expN的值。代码举例#include<stdio.h>#include<stdlib.h>intmain(){inta=-1;while(a*=-1,a){printf("

2016-05-01 10:14:04

查看更多

勋章 我的勋章
    暂无奖章