3.1.3 用例举例 在学习它的实现之前我们还是应该先看看如何使用它.相应的我们这里考察两个用例:一个用来跟踪算法在小规模输入下的行为测试用例和一个来寻找更高效的实现的性能测试用例. 3.1.3.1 行为测试用例 为了在小规模的的输入下跟踪算法的行为,我们用一下测试用例测试我们对符号表的所有实现.这段代码会从标准输入接受多个字符串,构造一张符号表来将i 和第i 个字符串相关联,然后打印符号表.我们假设所有的字符串都只有一个字母.一般我们会使用”S E A R C H E X A M P L E”
在.c文件中有程序: int main() { int const a = 10; a=20; printf("a=%d\n",a); return 0; } 编译就知道C语言编译器会报错,说变量a是常量,常量是不能当左值的,这样看来,好像a是定义的一个常量,不能修改! 修改程序: int main() { int *p; int const a=10; p=(int*)&a; *p=20; printf("a=%d\n",a); return 0; }
符号表是编译期产生的一个hash列表,随着可执行文件在一起 示例程序 int a = 10; int b; void foo(){ static int c=100; } int main(){ int d=1000; int e; foo(); } 符号表包括了变量和函数的信息,以及调试信息,可以通过nm 命令查看符号表 $nm -a 0000000000000000 a 0000000000004028 D a 0000000000004034 B b 0000000000004030 b