
C/C++
文章平均质量分 58
Shirsen
因为折腾,所以简洁。因为简洁,所以快乐。因为快乐,所以折腾。
展开
-
C语言的数据存储
一、划分 1、代码区:存放编译后可执行代码的区域。 2、静态存储区:存在着静态变量(static修饰的变量,如:static int a)以及全局变量。全局变量和静态变量在分配内存时会被初始化器初始化为类型0。 3、常量区:存放一些常量(如: char *p = “abcd”)且被认为是只可读的。 4、栈区:存放函数的形参和局部变量(包括原创 2017-04-18 18:41:17 · 737 阅读 · 0 评论 -
函数顺序点分析和可变参数函数
函数分析1. 说明程序的内存布局 堆栈段在程序运行后才正式存在,是程序运行的基础 .bss段存放的是未初始化的全局变量和静态变量 .text段存放的是程序的可执行代码 .data段保存的是已经初始化了的全局变量和静态变量 .rodata段存放程序中的常量值,如字符串常量如图函数的活动记录 临时变量域:存放临时变量的值,如k++的中间结果 局部变量域:用来存放函数本次执原创 2017-05-20 15:58:52 · 361 阅读 · 0 评论 -
C语言动态内存申请
C语言动态内存申请1.malloc原型:void* malloc(size_t size) void free(void* pointer)说明: malloc分配的是一片连续的内存空间,以字节为单位,不带任何类型信息 malloc实际分配的内存比请求的稍微多一点 当请求的内存无法满足时,返回NULL 当free的参数为NULL时,函数直接返回示例:int main(){原创 2017-05-18 17:33:29 · 1521 阅读 · 0 评论 -
函数指针与回调函数
函数指针1.前言函数类型 函数有自己的特定类型,且由返回值、参数类型、参数个数共同决定(隐含了参数顺序) 例如:int add(int i, int j)的类型为int(int, int) 通过typedef为函数重命名typedef type name(parameter list) 例如:typedef int f(int, int)、ty原创 2017-05-17 20:40:50 · 327 阅读 · 0 评论 -
二维数组和二级指针
二维数组和二维指针1.前言本文所用到的部分基础知识可以查看此文: http://blog.youkuaiyun.com/xingerr/article/details/72372563说明: 二维数组在内存中按照一维的方式进行存储 二维数组中的第一维是一维数组 二维数组中的第二维是具体的值 二维数组的数组名可以看做是常量指针 array[2][4]根据选择不同可以为2行4列,也可以为4原创 2017-05-17 17:32:57 · 3531 阅读 · 0 评论 -
C语言文件函数
C语言文件函数1.说明:t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写name:要打开的文件的(路径)名字mode:要打开的文件的模式FILE:文件指针(结构体)打开方式mode说明:r :以只读方式打开文件,只允许读取,不允许写入。该文件必须存在r+ :以读/写方式打开文件,允许读取和写入。该文件必须存在rb+:以读/写方式打开一个二进制文件原创 2017-05-08 22:46:18 · 715 阅读 · 0 评论 -
指针数组和数组指针
指针数组和数组指针1.前言数组 数组有自己的特定类型,由元素类型和数组大小共同决定 数组名的值是指针常量,也是数组第一个元素的地址 当数组名作为sizeof操作符或单目操作符&的操作数时,不用指针常量表示 arrary[2]等价于*(2 + (arrary))等价于*(arrary + 2)等价于2[arrary] 数组在个函数传参时会被弱化为指针指针原创 2017-05-17 12:42:01 · 610 阅读 · 0 评论 -
C语言#与##运算符的使用
#与##运算符的使用1.#运算符作用:进行字符串的转换作用域:只能在宏定义中使用示例:#define fun(x) #x //将x转化成为字符串//逗号表达式是从左往右进行计算#define CALL(f, p) (printf("Call function %s\n", #f), f(p))int square(int n){ return n * n;}int f1(in原创 2017-05-15 18:01:24 · 546 阅读 · 0 评论 -
C语言void关键字
void关键字1.类型:void 是“空类型”。void 则为“空类型指针”,void 可以指向任何类型的数据。2.void作用: 对函数返回的限定 对函数参数的限定void a说明:因为void为无类型,在内存中偏移量为0,它声明变量a,a在内存中没有空间,所以无法定义且后面无法赋值从而报错。变量赋值条件: 1.”=”左边要指向一个有效的地址 2.”=”左边指向的有效原创 2017-05-15 15:10:30 · 1212 阅读 · 0 评论 -
结构体内存对齐
内存对齐1.说明:第一个成员起始于0偏移处每个成员按其指定大小和指定对齐参数n中较小的一个进行对齐 1.偏移地址和成员占用大小均需对齐 2.结构体成员对齐参数为其所有成员使用对齐参数的最大值结构体总长度必须为所有对齐参数的整数倍2.示例说明:示例1:说明:默认为#pragma pack(4),也就是按4个字节大小对齐struct test{ char c1;//大小原创 2017-05-11 21:53:47 · 227 阅读 · 0 评论 -
mem函数源码
mem函数源码1.memcpy函数原型:void *memcpy(void *dest, const void *src, int count)作用:由src指定内存区域拷贝count个字符到dest所指定的内存区域。代码:void *my_memcpy(void *dest, const void *src, int count){ /*由src指定内存区域拷贝count个字符到原创 2017-05-04 16:08:41 · 619 阅读 · 0 评论 -
在C语言中,double、long、unsigned、int、char类型数据所占字节数
在C语言中,double、long、unsigned、int、char类型数据所占字节数1.说明:1.以防以后会用到。 2. 和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异。 3. 但有几条铁定的原则(ANSI/ISO制订的): 1.sizeof(short int)<=sizeof(int) 2.sizeof(int)<=si转载 2017-05-11 21:28:37 · 993 阅读 · 0 评论 -
#error和#line
#error和#line1.#error和#warning用法:#error message(不需要双引号包围)作用:#error自定义生成一个编译错误消息,并立即停止编译,#warning生成编译警告,不会停止编译。示例:#define NAME1 "NAME1"#define NAME2 "NAME2"//#define COMMAND "Hello"int main(){原创 2017-05-11 17:52:14 · 307 阅读 · 0 评论 -
C语言宏定义详解
宏定义0.前言本文章的程序是在linux下测试通过的本文的分析通过了下面的命令来查看预编译结果 gcc -E filename.c -o filename.i 这条命令的作用是生成预处理文件filename.i gcc -S filename.c -o filename.s 这条命令的作用是生成预编译文件filename.s原创 2017-05-10 19:55:32 · 799 阅读 · 0 评论 -
C语言条件编译详解
条件编译0.前言本文章的程序是在linux下测试通过的本文的分析通过了下面的命令来查看预编译结果 gcc -E filename.c -o filename.i 这条命令的作用是生成预处理文件filename.i gcc -S filename.c -o filename.s 这条命令的作用是生成预编译文件filename.s原创 2017-05-10 18:49:55 · 1296 阅读 · 0 评论 -
C语言的四种拷贝函数
头文件:#include一、strcpy函数 strcpy()函数用来复制字符串,其原型为: char*strcpy(char *dest, const char *src); 【参数】dest 为目标字符串指针,src为源字符串指针。 注意:src 和 dest 所指的内存区域不能重叠,且 dest必须有足够的空间放置 src 所包含的字符串(包含原创 2017-04-18 12:29:51 · 32014 阅读 · 0 评论 -
C语言NULL和0的区别详解
C语言NULL和0的区别详解1.分析0 would digit zero, that is, a numerical value.'0' could be the character capital oh or the character zero. For example: char word[10] = "Oxford"; char number[10] = "01234";Dependin原创 2017-04-30 15:25:27 · 2622 阅读 · 0 评论 -
浮点型在计算机中的存储
1、内存表示 在探讨float的存储呢之前可以先说一下整型在计算机内存中的存储是补码形式,大家可以自行试验一下,包括负数的存储的形式。 1>我们在讨论浮点型在计算机中是如何存储的,首先要明白两个前提条件 (1)实型数据在计算机中以指数的形式保存(2)float在计算机中占四个字节,符号位1位,指数位8位,尾数位23位;double在计算机中占八个字节,符号位1位,指数1原创 2017-04-18 18:44:45 · 791 阅读 · 0 评论 -
C语言str函数的源码
str函数的源码1、strcpy函数原型:char * strcpy(char * destin, const char * source)作用:把source指向的字符串拷贝到destin指向的字符串中代码:char * my_strcpy(char * destin, const char * source){ /***把source指向的字符串拷贝到destin指向的字符串中原创 2017-04-20 13:03:50 · 2884 阅读 · 2 评论