随笔分类 -  c++ & c 语言

sprintf
摘要:sprintf不能检查目标字符串的长度,可能造成众多安全问题. 推荐使用snprintf 函数原型 int snprintf(char*str, size_t size,constchar*format, ...); // size是限定最终生成的dest的字符数,最多拷贝size-1个字符; 一般 阅读全文

posted @ 2021-09-19 09:04 lodger47 阅读(104) 评论(0) 推荐(0)

什么时候使用指针?什么时候使用引用?什么时候应该按值传递?
摘要:何时使用引用参数的主要原因有两个: 程序员能够修改调用函数中的数据对象。 通过传递引用而不是整个数据对象,可以提高程序的运行速度。 什么时候使用指针?什么时候使用引用?什么时候应该按值传递? 下面是一些指导原则: 对于那些函数,它们只使用传递过来的值,而不对值进行修改。 如果数据对象很小,如内置数据 阅读全文

posted @ 2021-09-13 09:49 lodger47 阅读(537) 评论(0) 推荐(0)

pthread_once
摘要:函数原型 int pthread_once(pthread_once_t *once_control, void (*init_routine) (void)); 函数作用 本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执 阅读全文

posted @ 2021-09-02 09:14 lodger47 阅读(76) 评论(0) 推荐(0)

assert 断言
摘要:头文件 #include <cassert> 函数原型 void assert( int expression ); assert宏的原型定义在<assert.h> 如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行 使用assert的缺点是,频 阅读全文

posted @ 2021-09-02 08:21 lodger47 阅读(45) 评论(0) 推荐(0)

服务器开发尝尝忽略的信号
摘要:SIGCHLD,默认不处理,会产生僵尸进程,直到父进程退出,才被init 接受处理.服务器程序肯定不能随便退出,那么就会造成僵尸进程累积,僵尸进程会占用进程id,进程结束状态,进程运行时间等信信,会给系统造成负担,另外进程号是有限的,如果进程号耗尽那么,系统在也没办法产生新进程. SIGPIPE , 阅读全文

posted @ 2021-09-01 16:19 lodger47 阅读(31) 评论(0) 推荐(0)

c 语言针对大小写
摘要:#include <ctype.h> 函数 介绍 isalnum 判断一个字符是否是字母或数字 isalpha 判断一个字符是否是字母 isblank 函数用来检测一个字符是否是空白符 C语言一般使用 ASCII 编码,这样的空白符只有空格' '和水平制表符'\t' isspace 函数用来检测一个 阅读全文

posted @ 2021-08-31 09:48 lodger47 阅读(81) 评论(0) 推荐(0)

perror
摘要:perror 需要紧跟着上一个函数 阅读全文

posted @ 2021-08-31 09:22 lodger47 阅读(34) 评论(0) 推荐(0)

c 文件读写
摘要:读写模式 FILE 结构体 三种刷新缓冲区的操作 简单读写示例: fgetc 与 fputc fgets 与 fputs fread 与 fwrite fscanf 与 fprintf rewind 和 fseek 随机读写文件 feof 拷贝文件 read 与 write 错误集合 #includ 阅读全文

posted @ 2021-08-31 09:19 lodger47 阅读(139) 评论(0) 推荐(0)

c++ 智能指针
摘要:所需要的头文件 #include <memory> shared_ptr : 允许多个指针指向同一个对象; unique_ptr : 独占 所指向的对象 weak_ptr : 弱引用 shared_ptr独有的操作 make_shared函数 : 最安全的分配和使用动态内存的方法 shared_pt 阅读全文

posted @ 2021-08-30 16:03 lodger47 阅读(44) 评论(0) 推荐(0)

c++ 线程创建的多种方法
摘要:基本创建线程 通过类创建线程 通过Lambda创建线程 带参数的线程创建方式 以智能指针为参数的线程 以类的成员函数去充当线程处理函数 cout<<this_thread::get_id()<<endl; // 获取线程Id 注意点: 创建一个线程,不做处理,会调用abort函数中止处理 一个线程只 阅读全文

posted @ 2021-08-30 11:09 lodger47 阅读(1226) 评论(0) 推荐(0)

数据结构篇
摘要:1.栈 2.循环队列 3.基本二叉树 4.基本二叉树进阶 栈 stack.h #pragma once typedef struct tag{ int m_val; struct tag *pNext; }Node_t,*pNode_t; typedef struct { pNode_t phead 阅读全文

posted @ 2021-08-26 17:08 lodger47 阅读(35) 评论(0) 推荐(0)

联合体,和枚举
摘要:#include <iostream> union data{ int i; char c; float f; }; enum weekday{sun,mon,tue,wed,thu,fri,sat}; int main() { union data a; // 联合体,共用体所有成员共用一块空间 阅读全文

posted @ 2021-08-26 15:47 lodger47 阅读(25) 评论(0) 推荐(0)

C 语言结构体,结构体指针
摘要:struct Student{ int num; char name[20]; char sex; int age; float score; char addr[30]; }; void demo() { struct Student s={1001,"lele",'M',20,98.5,"Sha 阅读全文

posted @ 2021-08-24 17:11 lodger47 阅读(31) 评论(0) 推荐(0)

goto和setjmp,longjmp
摘要:goto介绍 利用了goto和if语句来实现了循环功能,它与while实现的循环功能一样 int day = 1; loop: if (day <= 31) { printf("%d\n", day); day++; goto loop; } setjmp,longjmp介绍 #include <s 阅读全文

posted @ 2021-08-24 10:38 lodger47 阅读(69) 评论(0) 推荐(0)

c语言函数指针
摘要:函数指针 函数指针:函数名本身即函数指针,指向函数的入口地址。 函数指针的定义:返回值类型 (*函数指针名)(形参列表类型) = 函数名; 函数指针的调用:函数指针名(实参列表); 等价于函数名(实参列表); #include <iostream> int my_func(int a,int b) 阅读全文

posted @ 2021-08-19 14:48 lodger47 阅读(93) 评论(0) 推荐(0)

二维数组
摘要:int a[5] = {1,2,3,4,5}; int b[3][4] = {1,2,3,4,5,6,5,1,2,4,5,6}; printf("%d\n",sizeof(a)); // 20 printf("%d\n",sizeof(b)); //48 printf("%d\n",sizeof(b 阅读全文

posted @ 2021-08-07 06:41 lodger47 阅读(22) 评论(0) 推荐(0)

gets,puts,fgets
摘要:gets | puts fgets gets | puts gets:会读取空格,gets遇到\n后,不会存储\n,而是翻译为\0空字符 gets: 正常返回字符数组起始地址,失败返回 NULL puts: puts成功时返回非负值,失败时返回EOF. puts只能用于输出字符串,同时会多打一个换行 阅读全文

posted @ 2021-08-06 07:08 lodger47 阅读(115) 评论(0) 推荐(0)

memmove,memcpy
摘要:转自 http://c.biancheng.net/cpp/html/156.html memcpy 用来复制内存内容 void * memcpy ( void * dest, const void * src, size_t num ); 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的 阅读全文

posted @ 2021-08-04 17:24 lodger47 阅读(60) 评论(0) 推荐(0)

sscanf,getchar
摘要:全缓冲: 全缓冲的典型代表是对磁盘文件的读写 行缓冲: scanf. printf. 都是行缓冲,等按下回车键换行时才进行实际I/O操作 不带缓冲: 也就是不进行换从,标准错误情况stderr是典型代表 scanf %d 忽略 空格 和 \n scanf 成功返回元素个数,失败返回0 #includ 阅读全文

posted @ 2021-08-02 06:59 lodger47 阅读(49) 评论(0) 推荐(0)

作业
摘要:打印99乘法表 字符串反转 递归调用 打印99乘法表 #include <stdio.h> int main() { int i,j; for (i = 1; i < 10; ++i){ for (j = 1; j <= i; ++j) printf("%d x %d = %d\t",j,i,i*j 阅读全文

posted @ 2021-08-02 05:58 lodger47 阅读(38) 评论(0) 推荐(0)

导航