Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1157674
  • 博文数量: 241
  • 博客积分: 4385
  • 博客等级: 上校
  • 技术积分: 2383
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-07 23:13
文章分类

全部博文(241)

文章存档

2013年(1)

2012年(8)

2011年(62)

2010年(109)

2009年(61)

分类: 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

答:强制给某一指针分配随意的内存,是很危险的!

4p71(第一版)疑问

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;

}

6new产生的指针,delete后变成迷途指针,必须给他赋0变成空指针,重复delete空指针是安全的!

7:指针和句柄的区别?

答:(1)句柄的引入:windows是以虚拟内存为基础的操作系统,对象的物理地址是可变的。

(2)句柄是一个32bituint,它标识了某一系统资源,它隐藏了系统的一些信息。

阅读(1275) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~