1.下面 const 的含义如何?
const int *a;
int const *a;
int * const a;
int const * const a;
第一种和第二种表示:指针可以保存不同的地址,但不能改变其地址所保存的值
第三种表示:指针所保存的地址一旦确定,不能改变,但可以改变其地址所保存的值
第四种表示:指针所保存的地址一旦确定,其保存的地址和值都不可改变
2.
内存越界分两种:
读越界:读了不属于自己的数据,如果所读的内存地址是无效的,程序和立刻崩溃,如果所读内存地址是有效的,在读的时候不会马上出现问题,但由于读到的数据是随机的,因此它会造成不可预料的后果。(数组下标越界)
写越界:又称为缓冲区溢出,所写入的数据对别的程序来说是随机的
3.编写不使用中间变量完成两个数交换的函数,至少两种方法完成
(同理可以使用惩处乘除,但是这些方法只适合整型甚至非零的整型)
//方法一
void swap1(int *left,int *right)
{
*left = *left + *right;
*right = *left - *right;
*left = *left - *right;
}
//方法二
void swap2(int *left,int *right)
{
*left = *left ^ *right;
*right = *left ^ *right;
*left = *left ^ *right;
}
4linux的地址空间



