可能重复:
指针的常用用途?
我仍在学习C++的基础知识,但我已经足够了解有用的小程序.
我理解指针的概念,我在教程中看到的例子对我来说很有意义.但是,在实际层面上,作为(前)PHP开发人员,我还不自信在我的程序中实际使用它们.
事实上,到目前为止,我还没有觉得需要使用任何指针.我有我的类和函数,我似乎完全没有使用任何指针(更不用指针指针).我不禁为我的小程序感到有些自豪.
尽管如此,我知道我缺少一个C++最重要的功能,一个双刃:指针和内存管理可能造成破坏,看似随机的崩溃,很难找到错误和安全漏洞......但与此同时,如果使用得当,它们必须允许巧妙而有效的编程.
所以:不要使用指针告诉我我错过了什么.
什么是使用指针必须的好方案?
他们允许你做什么,否则你不能这样做?
它们以哪种方式使您的程序更有效率?
那么指针指针呢?
[编辑:所有各种答案都很有用.SO的一个问题是我们不能"接受"不止一个答案.我经常希望我能.实际上,所有答案的组合有助于更好地理解整体情况.谢谢.]
当我想让一个类访问一个对象时,我使用指针,而不给它该对象的所有权.即使这样,我也可以使用引用,除非我需要能够更改我正在访问的对象和/或我需要没有对象的选项,在这种情况下指针将为NULL.
之前已经问过这个问题.我的回答是:
我在编写的C++代码中每六行使用一次指针.在我的头顶,这些是最常见的用途:
指针通常用于C++.对它们感到满意,将有助于您了解更广泛的代码.也就是说,如果你可以避免使用它们,那么,随着程序变得越来越复杂,即使只是与其他库接口,你也可能需要它们.
主要指针用于指动态分配的内存(返回new).
它们允许函数接受无法复制到堆栈的参数,因为它们太大或无法复制,例如系统调用返回的对象.(我认为堆栈对齐也可能是一个问题,但是太自信了.)
在嵌入式编程中,它们用于指代硬件寄存器之类的东西,它要求代码写入内存中非常特定的地址.
指针还用于通过其基类接口访问对象.那就是我有一个派生自A类的B级class B : public A {}.这是一个对象B的实例,可以通过将其地址提供给指向A类的指针来访问,就好像它在A类中一样,即:A *a = &b_obj;
在数组上使用指针作为迭代器是一个C语言.这在旧的C++代码中可能仍然很常见,但可能被认为是STL迭代器对象的不良表兄.
如果你需要与C代码接口,你将不可避免地需要处理用于引用动态分配对象的指针,因为没有引用.C字符串只是指向由nul'\ 0'字符终止的字符数组的指针.
一旦你对指针感到满意,指针的指针似乎就不那么糟糕了.最明显的例子是参数列表main().这通常被声明为char *argv[],但我已经看到它(法律上我相信)宣称char **argv.
声明是C风格,但它说我有指向char的指针数组.这被解释为C样式字符串(由nul'\ 0'字符终止的字符数组)的任意大小的数组(大小由argc携带).
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |