
c/c++
cx1468059916
IT人、阳光、年轻
展开
-
void 空指针
void指针是空类型指针,它不指向任何类型,即void指针仅仅是一个地址,所以空类型指针不能进行指针运算,也不能进行间接引用(因为指针运算和间接引用都需要指针的类型信息)。例如:void*p; //仅仅表示p存放一个地址 p++; //error:+、-运算离不开指针类型 *p=20.5; //error:访问p指向的变量空间需要转载 2012-12-05 22:36:14 · 647 阅读 · 0 评论 -
c数组名和指针
1.请看下面的代码:int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6}; pa = a; for (i = 0; i { printf("%d\n", *pa); pa++; /*注意这里,指针值被修改*/ } 可以看出,这段代码也是将数组各元素值输出。不过,你把循环体{}中的pa改成a试试原创 2013-08-08 23:02:55 · 1067 阅读 · 0 评论 -
c宏详解
1. 防止一个头文件被重复包含 [cpp] view plaincopyprint?#ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2. 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 [转载 2013-08-11 23:11:18 · 1077 阅读 · 0 评论 -
L-vlaue & R-value (pointer)
1.L-value and r-value The symbol appearing on the left of an assignment is sometimes called an l-value (for "left-hand-side" or "locator" value), while a symbol on the right of an assignment is原创 2013-08-14 08:33:57 · 1040 阅读 · 0 评论 -
c pointer and array
pointer: if c is a char and p is a pointer that points to it, we could represent the situation this way:原创 2013-08-13 22:53:35 · 1561 阅读 · 0 评论 -
initial pointer [expert c]
initial differece between pointer and array Both arrays and pointers can be initialized with a literal string in their definition. Although these cases look the same, different things are原创 2013-08-26 14:09:46 · 1077 阅读 · 0 评论 -
宏与内联函数
第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开转载 2013-08-29 08:13:52 · 839 阅读 · 0 评论 -
scanf()函数
问题:scanf()函数不能正确接受有空格的字符串?如: I love you!#include int main(){ char str[80]; scanf("%s",str); printf("%s",str); return 0;}输入:I live you!输出:I scanf转载 2013-08-29 08:25:26 · 742 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati转载 2013-09-05 22:51:50 · 682 阅读 · 0 评论 -
c tips 待续、、、
1.十六进制形式的输出: printf("%#x",i); // 加上#有0x的显示。原创 2013-08-02 19:39:17 · 767 阅读 · 0 评论 -
linux中创建静态库和动态库
1. 函数库有两种:静态库和动态库。 静态库在程序编译的时候会被连接到目标代码中,程序运行时将不再需要改静态库。 动态库中程序编译的时候并不会连接到目标代码中,而是在程序运行时才被载入,因此在程序运行的时候还需要动态库的存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char原创 2013-08-01 16:02:52 · 849 阅读 · 0 评论 -
ffush,system,buffer,fseek
1. system ( const char *command) The system( ) function passes command to command interpreter, which executes the string as an operating-system command. If command isNULL, the function simp原创 2012-12-21 14:36:48 · 1176 阅读 · 0 评论 -
读文件分出字符串c代码
#include #include void main( ){ int count, total = 0; char buffer[100]; char fileName[20]; FILE *stream1,*stream2; if( ( stream1 = fopen( "in.txt", "r+t" )) == NUL原创 2012-12-21 18:21:20 · 801 阅读 · 0 评论 -
函数参数的传递问题
程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{ s=(char *) malloc(100);}void main(){ char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p) free(p);}程序2:void myMalloc(ch转载 2012-12-05 22:30:43 · 659 阅读 · 0 评论 -
time.h头文件
查看msdn时,看到clock函数的返回值是time_t,不认识time_t,随查看time.h头文件,原来有一句 time_t定义是这样写的 : typedef long time_t. The clock function tells how much processor time the calling process has used.同时还有标识符CLOCKS_PER原创 2012-11-11 08:10:38 · 1527 阅读 · 0 评论 -
fopen & open
(一)1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速转载 2012-12-05 22:33:25 · 460 阅读 · 0 评论 -
FILE learning 1
Usually,we need to operate some files to accomplish the works.And the file system is one of the most important part of the computer. 1.We frequently use the fopen(const char * filename,const char *原创 2012-12-06 20:34:14 · 527 阅读 · 0 评论 -
FILE I/O
ANSI C里定义的标准I/O是一种带缓冲的高级磁盘I/O,目的是尽可能减少使用read和write系统调用的次数,从而提高I/O效率。标准I/O提供了3种类型的缓冲类型。1. 全缓冲(Full buffering)。在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。对驻留在磁盘上的文件的访问通常是由标准I/O库实施全缓冲的。2.行缓冲。在这种情况下,当在输入和输出中遇到新原创 2012-12-05 22:26:47 · 656 阅读 · 0 评论 -
浅析"烫烫烫烫"是怎么来的
在用VC写代码时,经常会遇到在栈中申请空间的并且没有被初始化的字符数组就会显示"烫烫烫烫。。。",虽然是知道编译器对栈中没有初始化的数据会进行默认的初始化工作,但是一直不得要领,在拜读《程序员的自我修养》的时候有所收获,还挺有意思的,写出来和大家分享。 代码很简单,就是在栈中申请了一个大小为4个字节的字符数组。[cpp] view plaincopypr转载 2012-12-07 19:19:25 · 1338 阅读 · 0 评论 -
character encoding
首先先谈谈VC中的编码问题,首先编码我们大致可以分为两类:文件编码和内存编码。文件编码即源代码文件的编码,gbk,UTF-8等。内存编码即源代码编译成为二进制文件的时候采用的编码。比如,在VC 2008中我们写下如下的代码:char* a = “a中”;让我们分别来看一下文件编码和内存编码的区别。用UntraEdit打开该cpp文件,进入十六进制模式:我们可以看到”转载 2012-12-16 15:42:06 · 981 阅读 · 0 评论 -
exit,fread,fgetc
1.putchar(10) // print a feed line to the screen2.The void exit( int status ) function remarks: The exit function terminate the calling process. exit calls, in last-in-first-out(LIF原创 2012-12-07 22:29:40 · 617 阅读 · 0 评论