C语言学习笔记8
程序规模不是很大时,最好用只用一个头文件存放程序中各部分共享的对象。
用static声明限定外部变量与函数,可以将其后声明的对象的作用域定为被编译源文件的剩余部分。
如果把函数声明为static类型,则该函数名除了对该函数声明所在的文件可见外,其它文件都无法访问。
不进行显式初始化的情况下,外部变量和静态变量都将被初始化为0,而自动变量和寄存器变量的初始值则没有定义。
Register声明告诉编译器,它所声明的变量在程序中使用频率较高。其原理是将该变量放在机器的寄存器中。
Register声明只适用于自动变量以及函数的形式参数。
无论寄存器变量是不是存放在寄存器中,它的地址都是不能访问的。
快速排序基本思想:对于一个给定的数组,从中选择一个元素,以该元素为界将其余元素划分为两个子集,一个子集中元素都小于该元素,另一个子集中元素都大于该元素。
void qsort(int v[], int left, int right)
{
int i, last;
void swap(int v[], int i, int j);
if(left >= right)
return;
swap(v, left, (left + right) / 2);
last = left;
for(i = left + 1; i <= right; i++)
if(v[i] < v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last - 1);
qsort(v, last + 1, right);
}
void swap(int v[], int i, int j)
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}