
C语言
文章平均质量分 60
patkritLee
practice makes perfect.
展开
-
C指针偏移量
1代表的是一个单位量 p1+5=p1+5*1=p1+5*sizeof(unsigned char)=p1+5*1=0x801000+ox5=0x801005 p2+5=p2+5*1=p2+5*sizeof(unsigned long)=p1+5*4=0x810000+20=0x810000+0x14=0x810014 最后要转换成16进制注意是16进制,一个unsi原创 2016-09-02 15:06:57 · 1216 阅读 · 0 评论 -
动态分配内存函数:malloc(),calloc(),realloc()总结
C 标准函数库提供了许多函数来实现对堆上内存管理,其中包括:malloc函数,free函数,calloc函数和realloc函数。使用这些函数需要包含头文件stdlib.h。它们的声明如下:void * malloc(int n);void free (void * p);void *calloc(int n,int size);void * realloc(void * p,in转载 2016-08-24 17:26:47 · 1374 阅读 · 0 评论 -
string类中的size()和length()的区别
如题:功能上没有区别。basic_string一个是代替传统的C字符串,所以应该针对C中的strlen,给出相应的函数length。另外一个身份可用作STL容器,所以要按照STL容器的惯例给出size()。原创 2016-08-03 17:41:16 · 1041 阅读 · 0 评论 -
memcpy、strcpy 和memmove
strcpy和memcpy都是标准c库函数,它们的特点:strcpy提供了字符串的复制,strcpy只用于字符串的复制,不仅复制字符串内容外,还会复制字符串的结束符。strcpy的函数原型是: char* strcpy(char* dest, const char* src);char *strcpy(char *dest,const char *src){ if((src==NUL原创 2016-08-03 17:00:58 · 618 阅读 · 0 评论 -
指针数组和数组指针
这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。in原创 2016-07-27 20:02:51 · 310 阅读 · 0 评论 -
带有头节点的单链表的逆置
首先思路必须要清晰,正常思维是倒着来,先找到尾巴结点,这样我们发现都需要记录前驱结点,这样是很繁琐的,因为无法知道前驱结点。所以只能从头往后逆置,而且逆置是一个结点一个结点这样找的,所以我们需要记录当前结点的下一个节点,另外当发生逆置时,是需要知道前面的结点的,因此还需要另外一个结点记录前驱结点。typedef struct SList{ int val; SList *next;原创 2016-02-26 14:40:41 · 2667 阅读 · 0 评论 -
C语言内存四区
流程:1.点击.exe文件后,操作系统把物理硬盘代码load到内存。2.操作系统把c代码分成4个区3.操作系统找到main函数入口执行各区元素分析:栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等栈区:一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。全局区(静态区):全局变量和静态变量的存储室放在一起的,初始原创 2016-02-26 13:18:06 · 487 阅读 · 0 评论 -
文件操作概念
文件读写api fgetc fputc 按照字符读写文件fputs fgets 按照行读写文件(读写配置文件)fread/fwrite 按照块读写文件(大数据块迁移)1.标准文件的读写1.1文件的打开fopen()文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构去,并将该结构的指针返回给用户程序,以后用户程序就可以用此FILE指针来实现对原创 2016-02-26 12:33:44 · 596 阅读 · 0 评论 -
char* 和char []的区别
char c[] = "abc"; c[0] = 't'; char *c1 = "def"; c1[0] = 't';//err首先c1是一个指针,它只是指向"def"这个内存块,但是并不知道它的大小,因此不能用对它进行赋值。而c[]定义的是一个数组,因而可以直接用下标对其进行访问。若定义的是 char c2[] = "abc"; char *p = c2; p[0]原创 2016-02-26 09:24:29 · 411 阅读 · 0 评论 -
关于const做函数返回值的 一个解释
我们看一个例子:char *strA(){ char str[] = "helloworld"; return str;}int _tmain(int argc, _TCHAR* argv[]){ strA(); return 0;}解析:这个str里存的地址是函数strA栈帧里"hello world"的首地址。函数调用完成,栈帧恢复到调用strA之前的状态,临时空间转载 2016-02-26 09:08:12 · 779 阅读 · 0 评论 -
指针与引用的区别
(1)非空区别:在任何情况下都不能使用指向空值的引用。 一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空置给该变量。相反,如果你变量肯定指向一个对象,假如你的设计不允许变量为空,这时你就可以将变量声明为引用。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针更高。(2原创 2016-02-25 21:58:58 · 512 阅读 · 0 评论 -
split()函数的实现
#include #include #include using namespace std;vector split(const string& src, string separate_character){ vector strs; int separate_characterLen = separate_character.size();//分割字符串的长原创 2016-02-18 10:52:42 · 474 阅读 · 0 评论 -
文件加解密—解密版
接着上一篇 将函数改改就可演变出解密版的 ,代码如下:#include "stdafx.h"#include "des.h"#define _CRT_SECURE_NO_WARNINGS#include #include #include #pragma warning(disable:4996)int FileSymEnc(const char *pfile1,const char原创 2016-01-19 23:05:59 · 936 阅读 · 0 评论 -
文件操作案例-大文件加解密
文件操作预备知识:size_t fread(void *buffer, size_t size, size_t count, FILE *stream);//函数功能:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回0参数:buffer 用于接收数据的内存地址;size 要读的每个数据项的字节数;c原创 2016-01-19 19:18:18 · 870 阅读 · 0 评论