c++的指针的问题,高手来帮帮忙!

[复制链接]
查看11 | 回复5 | 2008-8-3 11:02:19 | 显示全部楼层 |阅读模式
内存中有一个自由存储区,用指针标记它,就可以存储数据。它比局部变量强在了哪里?
我是说,指针也有名字,但是为什么不像局部变量一样,会在作用域外被访问?

回复

使用道具 举报

千问 | 2008-8-3 11:02:19 | 显示全部楼层
首先,指针是在内存中开辟一段空间,并且不会消失。想要清除掉只有释放开辟的内存空间C语言。所以指针一定要在用不到时释放。在局部开辟的空间,如果没有在局部释放,则空间继续存在。所以只要知道开辟的空间地址,在作用域外也可以被访问。指针和局部变量两者之间并没有孰强孰弱,虽然用指针可以完成局部变量的操作,但比较复杂,而且开销大。但局部变量不能完成指针的操作。因为指针是针对地址操作,所以可以实现实参的传递。指针的实用非常的灵活,类型也很多,基本上只要是地址都可以是指针。也十分容易出错。对指针的控制一定要非常的严格。
回复

使用道具 举报

千问 | 2008-8-3 11:02:19 | 显示全部楼层
首先指针它也是变量,只是它的值是另一个普通变量或者指针变量在内存中的地址。所以指针其实是在引用另一个变量,所以指针的作用域应该和被引用变量的作用域应该是一样的,但也有例外,这个主要由编译器决定。一般不要引用局部变量。
回复

使用道具 举报

千问 | 2008-8-3 11:02:19 | 显示全部楼层
举一个简单的例子,假如定义一个string变量str,如果str是局部变量的话,在声明时就会出现一个问题,因为string变量是没有定长的,系统永不知道你在这个字符串将要输入多长的字节,也不知道该为str开辟多大的空间,所以不可能允许声明;但是引入指针机制这个问题就容易解决了,系统分配给str4byte的空间,用来存放指针,真正的字符都放在另外的空间里,指针
回复

使用道具 举报

千问 | 2008-8-3 11:02:19 | 显示全部楼层
对啊,指针就是存放地址的吧?可是存放的是什么的地址呢?char,int?还是说什么都能指的void ?不仅仅是指向变量,指针还能指向函数~~~如果你愿意,你还可以指向变量的某一部分,当然,前提是你要对数据的存储方式有一定的了解。很重要的一点,指针可以让程序员自由的操纵内存(当然同此引发的内存泄露也是C/C++程序员永远的痛)~~~~指针很
回复

使用道具 举报

千问 | 2008-8-3 11:02:19 | 显示全部楼层
对于C++用容器,尽量少用指针,指针很容易出错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行