/*------------------------------------------------- varargs.c -- use variable number of arguments -------------------------------------------------*/ #include <stdio.h> #include <stdarg.h> double sum(int, ...); int main() { double s, t; s = su…
/*----------------------------------------- mems.c -- 使用 memcpy() 和 memmove() -----------------------------------------*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #define SIZE 10 void show_array(const int ar[], int n);…
/*---------------------------------------- qsorter.c -- 用 qsort() 排序一组数字 ----------------------------------------*/ #include <stdio.h> #include <stdlib.h> //提供函数 rand() 原型 #define NUM 40 void fillarray(double ar[], int n); void showarray(const…
/*------------------------------------- rect_pol.c -- 把直角坐标转换为极坐标 -------------------------------------*/ #include <stdio.h> #include <math.h> #define RAD_TO_DEG (180 / (4 * atan(1.0))) typedef struct polar_v { double magnitude; double angle;…
/*------------------------------------- predef.c -- 预定义宏和预定义标识符 -------------------------------------*/ #include <stdio.h> void why_me(void); int main() { printf("The file is %s.\n", __FILE__); printf("The data is %s.\n", __DATE_…
/*-------------------------------------- names_st.h -- names_st 结构的头文件 --------------------------------------*/ #ifndef NAMES_ST_H #define NAMES_ST_H #include <string.h> #define SLEN 32 //结构声明 struct names_st { char first[SLEN]; char last[SLEN]; };…
第16章 string类和标准模板库 1. string容易被忽略的构造函数: string(size_type n, char c)长度为n,每个字母都为c string(const string & str, size_type pos = 0, size_type n = pos)初始化为str中从pos开始到结尾的字符,或从pos开始的n个字符 string(const char *s, size_type n)初始化为s指向的前n个字符,即使超过了s的结尾: string(Iter b…
第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式. ★PART1:Intel X86基础分页机制 1. 页目录.页表和页 首先先要明白分页是怎么来的,简单来讲,分页其实就是内存块的映射管理.在我们之前的章节中,我们都是使用的分段管理模式,处理器中负责分段的部件是段部件,段管理机制是Intel处理器最基本的处理机制,在任何时候都是无法关闭的.而当开启了分页管理之后,处理器会把4GB的内存分…
第十四章 预处理器 我跳过了先进的指针主题的章节. 太多的技巧,太学科不适合今天的我.但我真的读,读懂.假设谁读了私下能够交流一下.有的小技巧还是非常有意思. 预处理器这一章的内容.大家肯定都用过.什么#include,#define #ifdef #undef这些,可是绝对用的不多.作为全面了解学C,还是应该都看一看. 预处理器使用方法非常讲究,用不好会失误,用好了会大大加快执行时速度(不是编译速度). 总结: C程序的第一个步骤就是预处理.预处理器共包括下面几个符号: 1.#define 定…
目录 预处理符号 明显常量 #define 编译程序之前,先由预处理器检查程序(因此称为预处理器).根据程序中使用的预处理器指令,预处理用符号缩略语所代表的内容替换程序中的缩略语. 预处理器可以根据你的请求包含其他文件,还可以让编译器处理哪些代码.预处理器不能理解C,它一般是接受一些文本并将其转换成其他文本.-- (C Primer Plus中文第五版) graph TD; 写好的C文件 --> 编译器翻译,为预处理做准备 编译器翻译,为预处理做准备 --> 预处理器寻找肯能存在的预处理指令,…