摘要: 例子: 两个注意点: 可变参数里面char会被扩展成int 使用printf一次性打印所有可变参数时,第一个可变参数会在最后才被打印(反方向打印)。 #include<stdio.h> #include <stdio.h> #include <stdarg.h> void SHA_Init(char 阅读全文
posted @ 2021-07-10 15:52 Erden 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 信号 SIGSEGV 提示程序试图访问非法访问内存。 最常见的原因: 程序试图访问未安装于机器上的内存 或者 访问操作系统未分配给这个程序的内存 程序违反了内存访问的边界要求。比如可能发生在那些要求数据边界对齐的机器上。 SIGINT 用户使用中断程序时发生。 signal()函数 函数原型:voi 阅读全文
posted @ 2021-07-10 14:40 Erden 阅读(70) 评论(0) 推荐(0) 编辑
摘要: int setjmp(jmp_buf state); void longjmp(jmp_buf state, int value); 这两个函数提供了另一种goto语句的机制,但是不局限于函数的作用域之内。 直接上例子: #include<stdio.h> #include<setjmp.h> jm 阅读全文
posted @ 2021-07-10 13:17 Erden 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-07-08 23:36 Erden 阅读(15) 评论(0) 推荐(0) 编辑
摘要: I/O函数以3种基本形式处理数据:单个字符,文本行,二进制数据。 fscanf() int fseek(FILE *stream, long offset, int from) 在二进制流中, 从SEEK_END进行定位可能不被支持。 在文本流中, 如果from是SEEK_CUR或者SEEK_END 阅读全文
posted @ 2021-07-06 08:40 Erden 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-07-06 08:29 Erden 阅读(15) 评论(0) 推荐(0) 编辑
摘要: #argument:它被预处理翻译为argument ##:把自己两边的符号连接成一个符号 1 #include<stdio.h> 2 3 static int global_status_1 = 0; 4 static int global_status_2 = 0; 5 6 #define MY 阅读全文
posted @ 2021-07-05 23:23 Erden 阅读(126) 评论(0) 推荐(0) 编辑
摘要: int **(*abc[6])() adb[6]:下标优先级高于*,所以是abc是数组 *abc[6]:数组里面存的是指针ptr,F替换*abc[6] int **F():ptr指向一个函数,这个函数的返回值是int** int *(*abc())() abc():abc是一个函数 *abc():a 阅读全文
posted @ 2021-07-04 22:38 Erden 阅读(60) 评论(0) 推荐(0) 编辑
摘要: alloca() 在堆栈上分配内存,而不像malloc在堆上分配内存。 函数返回时,申请的内存会自动释放。 C99已支持可变长数组,所以没有必要使用alloca()。 阅读全文
posted @ 2021-07-04 21:04 Erden 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 作为右值: 结构名:存储在结构体内的值 数组名:指向数组第一个元素的指针 作为左值: 结构名:结构体存储的内存位置 数组名:因为是常量,所以不能作为左值 阅读全文
posted @ 2021-07-04 16:41 Erden 阅读(81) 评论(0) 推荐(0) 编辑