C++面试参考1
·指针篇
1.写一个数组指针与指针数组,并说出齐区别。
2.函数指针与指针函数的区别。
3.指针与引用的区别和相同点。
4.指针的&和*
5.函数的传值和传值区别
6.理解一个指针的指针和一个指向数组指针的指针
7.空指针能赋值吗?
8.”()”,”[]”,”*”的优先级。
9.理解数组指针和指针数组的内存分布。
10.给出结果:
struct Test
{
int Num;
char *pcName;
short sDate;
char cha[2];
short sBa[4];
}*p;
p + 0x1 = 0x___ ?
(unsigned long)p + 0x1 = 0x___?
(unsigned int*)p + 0x1 = 0x___?
11.写出一个野指针
由于free(),是把指针所指向的内存地址位置的一块内存上面的数据释放了,但是指针中的值还是指向该内存块首地址,这样就导致在if语句中判断是不等于NULL是合法的,所以任然可以使用
char* str_1 = (char*)malloc(100);
strcpy(str_1,"hello");
free(str_1);
if(str_1 != NULL) {
//指针指向的内存上面的值已经被清除
printf(" >>>> strr = [%s]\n",str_1);
strcpy(str_1,"world");
printf(" >>>> strr = [%s]\n",str_1);
}
结果:
>>>> strr = [葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺]
>>>> strr = [world]
12.int i=10, j=10, k=3; k*=i+j; k最后的值是?
答:60,此题考察优先级,实际写成: k*=(i+j);,赋值运算符优先级最低