分类: C/C++
2009-09-16 14:23:42
第三章 指针和引用
1:指针和引用的区别?
(1)非空区别
指针可以为空,而引用不能
(2)合法性区别(初始化区别)
引用使用前不要测试它的合法性,而指针需要,以防止指针为空
(3)可修改区别
指针可以重新指向一个新的对象,而引用不能
2:
引用不能为空,必须初始化:int &a;(错误)
const常量赋值时也要初始化:const int b;(错误)
3:下列代码有何错误?
代码:
int *ptr;
ptr = (int*)0x8000;
*ptr = 0xaabb;
答:强制给某一指针分配随意的内存,是很危险的!
4:p71(第一版)疑问
5:下列代码有何错误?
代码:
#include
int max(int x, int y)
{
return x>y?x:y;
}
int main()
{
int max(x, y);
int *p = &max;
int a, b, c, d;
printf(“Please input three integer\n”);
scanf(“%d%d%d”, a, b, c);
d = (*p)((*p)(a, b), c);
printf(“The maxmal integer is %d\n”, d);
return 0;
}
答:正确的代码如下
#include
int max(int x, int y)
{
return x>y?x:y;
}
int main()
{
int max(int, int);//错误1
int *p(int, int) = &max;//错误2
int a, b, c, d;
printf(“Please input three integer\n”);
scanf(“%d%d%d”, &a, &b, &c);//错误3
d = (*p)((*p)(a, b), c);
printf(“The maxmal integer is %d\n”, d);
return 0;
}
6:new产生的指针,delete后变成迷途指针,必须给他赋0变成空指针,重复delete空指针是安全的!
7:指针和句柄的区别?
答:(1)句柄的引入:windows是以虚拟内存为基础的操作系统,对象的物理地址是可变的。
(2)句柄是一个32bit的uint,它标识了某一系统资源,它隐藏了系统的一些信息。