1. 对于引用(变量的别名):
(1)引用的声明方法:类型标识符 &引用名=目标变量名;(类型标识符指目标变量的类型)
(2)声明引用时,必须同时对其进行初始化!!
(3)引用本身不占存储单元,系统也不给引用分配存储单元。对引用求地址,就是对目标变量求地址。
(4)引用的作用主要用于在函数参数传递中,解决大块数据或对象的传递效率和开辟空间过大的问题。用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。
(5)引用与指针的区别是,指针通过某个指针变量指向一个对象后,是对它所指向的变量间接操作;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
2. 以下程序的输出结果是:you&me
int main ()
{
char arr[2][4];
strcpy (arr[0],"you");
strcpy (arr[1],"me");
arr[0][3]='&';
printf("%s n",arr);
return 0;
}
字符串的结尾始终留有' '字符作为串的结束符!!!printf()打印字符串也是遇到' '就结束打印!
解析:由于arr数组是一个2行4列的二维数组,因此执行strcpy()后数组第一行的存储结果是:arr[0][0]='y',arr[0][1]='o',arr[0][2]='u',arr[0][3]=' '(arr[0]指*(arr+0),即对数组第一行进行赋值);第二行存储的结果是:arr[1][0]='m',arr[1][1]='e',arr[1][2]='0'。但再执行arr[0][3]='&',就等于就将第一行串的结束符' '换成了'&',此时就等于将第一行的串与第二行的串连接在一起了,进行输出操作就会打印出’you&me'了。
3. 当使用free()释放掉一个指针内容后,该指针若未被置空,则会变成野指针!
野指针是指向未分配/未初始化或者已free()或delete()释放但未置空的内存地址。
free之后的指针仍然指向原来的堆地址。操作系统认为被free()过的这块内存可以使用,它会毫不考虑的将他分配给其他程序,后果不堪设想。因此最好free了以后再置空,即令指针 = NULL,表示本程序已经放弃再使用该指针。
4. sizeof()是C语言中的一个操作符(运算符),不是函数调用!在编译时即计算好了,其返回值为无符号整型unsigned int,参数可以是数组、指针、类型、对象、函数等。
5. 排序算法--快排
//递归实现快排
int i, j;
void QuickSort(int* a, int left, int right)
{
if (left > right) return; //如果传进来的left>right代表循环结束/递归结束:已是排好序的数组
int tmp = a[left];//通常以数组首元素作为基准
int t;//辅助交换变量
i = left, j = right;
while (i != j) //当i==j时代表此时一轮排序已结束,要交换基准元素与a[i]或a[j]进行下一轮排序(递归)了
{
//先判断j,从右往左找比基准值小的
while (a[j] >= tmp && i < j)
{
j--;
}
while (a[i] <= tmp && i < j) //从左往右找比基准值大的
{
i++;
}
//前两个while都退出且i


