博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  实现-C/C++

摘要:为什么要对齐 32位架构的cpu,4个字节为一个读周期,设4字节变量在内存首地址为addr addr出现在4的整数倍地址处,方便一个读周期读取 若跨越2个周期拼凑一个4字节,效率低 对齐值 自身对齐值 整数类型自身的对齐值:内置类型自己的尺寸 结构体自身对齐值:数据成员最大的那个自身对齐值 指定对齐 阅读全文

posted @ 2023-03-13 09:29 乔55 阅读(113) 评论(0) 推荐(0)

摘要:memccpy void *memccpy(void *dest, const void *src, int c, size_t n); 阅读全文

posted @ 2023-03-13 09:28 乔55 阅读(29) 评论(0) 推荐(0)

摘要:memchr void *memchr(const void *s, int c, size_t n); 阅读全文

posted @ 2023-03-13 09:28 乔55 阅读(11) 评论(0) 推荐(0)

摘要:strrev char* strrev(char* str); 功能:逆序str 阅读全文

posted @ 2023-03-13 09:27 乔55 阅读(22) 评论(0) 推荐(0)

摘要:memcpy void *memcpy(void *dest, const void *src, size_t n); 功能:把src指向的n个字节复制至dest指向的内存空间中 阅读全文

posted @ 2023-03-13 09:27 乔55 阅读(13) 评论(0) 推荐(0)

摘要:strstr char *strstr(const char *haystack, const char *needle); 返回值:子串在母串中第一次出现的地址位置,找不到返回NULL 阅读全文

posted @ 2023-03-13 09:26 乔55 阅读(38) 评论(0) 推荐(0)

摘要:strcat char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, size_t n); 阅读全文

posted @ 2023-03-13 09:26 乔55 阅读(19) 评论(0) 推荐(0)

摘要:strcmp int strcmp(const char *s1, const char *s2); 返回值:返回0或正负值 mystrcmp int mystrcmp(const char* str1, const char* str2) { if (str1==NULL||str2==NULL) 阅读全文

posted @ 2023-03-13 09:25 乔55 阅读(51) 评论(0) 推荐(0)

摘要:strcpy char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); 功能:拷贝字符串 返回值:dest地址,失败返回NULL 特点:无法检测dest是否可以容纳 阅读全文

posted @ 2023-03-13 09:24 乔55 阅读(75) 评论(0) 推荐(0)

摘要:strlen ize_t strlen(const char* str); 功能:计算字符串的有效长度,不计算\0 运算符sizeof:计算时包含\0 自定义:mystrlen 阅读全文

posted @ 2023-03-13 09:23 乔55 阅读(19) 评论(0) 推荐(0)

摘要:常见的ctype.h系统字符函数 1. islanum:字母或数字 2. isalpha:字母 3. isdigit:数字 4. isblank:标准的空白符 5. iscntrl:控制字符 6. isgraph:除空格之外任意可打印字符 7. islower:小写字母 8. isprint:可打印 阅读全文

posted @ 2023-03-13 09:23 乔55 阅读(64) 评论(0) 推荐(0)

摘要:字符串常量 // 字符串常量"i love"存放于内存中的0x00667b30地址 // 将字面串常量拷贝到str1,str2内存中,末尾添加'\0' char str1[] = "i love"; // str1 = 0x00baf890 "i love" char str2[] = "i lov 阅读全文

posted @ 2023-03-13 09:17 乔55 阅读(74) 评论(0) 推荐(0)

摘要:字符串定义 char* str1 = (char[]){ "i love" }; // 栈上内存str1,可修改内容 char* p[5] = { "abc","efg"}; // &p[i]是字符串常量地址,不可修改内容 char str2[][10] = { "abc","efg" }; // 阅读全文

posted @ 2023-03-13 09:12 乔55 阅读(88) 评论(0) 推荐(0)

摘要:内联函数与宏替换 由预处理器处理,进行简单的文本替换,没有斜休编译过程 宏函数不可以访问类的成员 由于发生在预处理阶段,缺失了语法检测 阅读全文

posted @ 2023-03-13 09:10 乔55 阅读(24) 评论(0) 推荐(0)

摘要:内联函数的实现机制 将内联函数存入符号表,当需要使用时,直接替换即可 符号表是C++编译器自己要用的东本,故不会出现在最终的代码文件中 阅读全文

posted @ 2023-03-13 09:08 乔55 阅读(11) 评论(0) 推荐(0)

摘要:内联函数特点 内联函数没有普通函数调用时的额外开销:压栈、跳转、返回 内联函数仍由编译器处理,可检查参数、范围、返回值等,更安全 当函数执行体开销远远大于普通函数的调用开销时,内联毫无意义 内联函数直接将编译后的函数体插入调用该函数的位置 内联函数可以访问类的成员函数 编译器默认把类的成员函数做成内 阅读全文

posted @ 2023-03-13 09:06 乔55 阅读(54) 评论(0) 推荐(0)

摘要:默认参数详解 // 基本规则 1. 默认参数的设置,要求必须从右到左开始设置 2. 默认参数必须连续,不能在2个默认参数之间存在非默认参数 阅读全文

posted @ 2023-03-13 06:05 乔55 阅读(20) 评论(0) 推荐(0)

摘要:内联函数详解 // 内联函数特点 1. C++编译器会将一个函数进行内联编译,该函数叫内联函数 2. 内联函数在最终生成的代码中是没有定义的 3. 内联函数inline放在声明处不会成员,只有放在定义处才会成功 4. 不能将内联函数的声明与实现分别放在.h和.cpp文件中 5. C++编译器会推荐使 阅读全文

posted @ 2023-03-13 06:05 乔55 阅读(87) 评论(0) 推荐(0)

摘要:宏定义 #define N 10 宏:就是简的文件替换 宏函数 #define fun(x) (1+(x)+(x)*(x)) #define fun() do { printf("hello "); printf("world\n"); } while(0) // 宏函数有时不仅仅是一个表达式,还可 阅读全文

posted @ 2023-03-13 06:04 乔55 阅读(12) 评论(0) 推荐(0)

摘要:函数重载基本概念 // 什么叫函数重载 1. 同一作用域下,函数名相同,返回值类型相同,参数列表不同 2. 参数列表不同:参数的类型、个数、顺序不同。 void show(int a, long b) // 参数顺序不同的例子 { cout << "1" << endl; } void show(l 阅读全文

posted @ 2023-03-13 06:04 乔55 阅读(52) 评论(0) 推荐(0)