为什么要使用指针?指针的好处在哪里?

lbeast 2005-12-11 09:45:11
应该在很多地方都有用吧。但在看了些STL的书后,感觉有了STL指针反而用的少了。
我是个新手,请问大家在哪些地方需要使用指针,指针的好处在哪里?
请高手能举些简单的代码例子来说明,谢谢。

...全文
2208 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlsue 2005-12-14
  • 打赏
  • 举报
回复
可是你为什么要吃饭呢?道理一样简单!
archim 2005-12-14
  • 打赏
  • 举报
回复
程序的本质就是 地址/数据/操作
指针就代表其中的“地址”
踏岸寻柳 2005-12-14
  • 打赏
  • 举报
回复
如果使用C/C++而不用指针,那么C/C++语言将毫无乐趣可言。
STL里面用了大量的指针,就像Joe_Cai(超级小强)说的那样,是隐藏起来了。

指针,一旦掌握了正确的使用方法,有如下优点:
1. 快速,数据类型操作极为方便;
2. 高效,可以节省大量的内存上的开销。
Joe_Cai 2005-12-14
  • 打赏
  • 举报
回复
谁说STL指针用的少?恰恰相反!!!只不过他不像我们平常一样直接使用,而是包装成“智能指针”(Iterator)来使用,所以你看到的“原始”指针少了(至少从STL源码上看是这样),但是有“智能指针”的地方就有“原始”指针,而且到处都是~!!!没有指针就没有C++!!!
zhujiujun 2005-12-13
  • 打赏
  • 举报
回复
效率高,随便指.
我现在用vb,郁闷死了.
写的程序一个比一个慢,不能用指针,以前学的数据结构什么都用不上,写出来的算法自己都晕了,速度还慢死了.
homtipo 2005-12-12
  • 打赏
  • 举报
回复 1
如果你有一个或两三个保险柜,那么你可以将这几个保险柜的钥匙都放在身上.

如果你有几百个保险柜, 你还愿意都将钥匙放在身上吗? 呵呵, 肯定不愿意的吧. 那么怎么办?

哈哈, 对拉! 就是将保险柜钥匙贴上标签放到一个抽屉里面,而你身上只带着这把抽屉的钥匙.

需要的时候就拿钥匙开抽屉罗.

指针也就是这样啦. 指针存放的是地址(也就是保险柜的钥匙). 数据(也就是保险柜的物品)是通

过地址打开的!
davemin 2005-12-12
  • 打赏
  • 举报
回复
绝对是可以随便指,高人说的一点都没有错。
很简单,比如你想用一个API, 你就直接把那个API的内存地址找到就行了。

然后把指针转成:API 的指针
就是这样:
FuncProc* p = (FuncProc*) 0x000df9; 随便写不过要肯定是API的内存地址
然后
Result = p ( ... 参数: 比如"日 me" )



反正很多奇怪的事都与指针有关。像病毒啊,大多用指针才能瘦身... 你是不是很胖?那就多用用指针
Stefine 2005-12-12
  • 打赏
  • 举报
回复
呵呵,路过,看下

看到VC群里面的仁兄,

呵呵,帮顶
happydivid 2005-12-12
  • 打赏
  • 举报
回复
晕,不是没有指针,是指针使用频率较少
happydivid 2005-12-12
  • 打赏
  • 举报
回复
使用指针就是因为它的灵活,且可以直接操作内存,因为这样所以程序的效率高
STL中没有指针,那是因为指针过于灵活,很难操控,易于导致程序崩溃,所以STL以功能为单位将其封装,避免程序员直接操作指针
theHunter 2005-12-12
  • 打赏
  • 举报
回复
直接存取内存单元
pyrophile 2005-12-12
  • 打赏
  • 举报
回复
stl中指针用的也不少
lbeast 2005-12-12
  • 打赏
  • 举报
回复

哪位能举个提高效率的例子嘛?
fiftymetre 2005-12-12
  • 打赏
  • 举报
回复
可以说没有了指针后面得数据结构根本就没法构造了,任何事物都是两面的,指针的害处也是不小的,但C++不是胆小者的语言,请楼主明白。

指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。
TechEye 2005-12-12
  • 打赏
  • 举报
回复
struct Hello
{
int a;
int b;
char buf[1024];
};

int main(int argc, char* argv[])
{

Hello h, *p;
p = &h;
int t = sizeof(Hello);

__asm
{
mov ebx, p;
mov ecx, t;
s:mov byte ptr [ebx + ecx - 1], 0;
loop s;
}

return 0;
}
lbeast 2005-12-11
  • 打赏
  • 举报
回复
转一段:

参数的传递.当我们想要在子函数中修改传递进去的参数的值(而不是他的拷贝值),在C++中有了引用,但其实引用的本质就是指针.

动态的内存分配.有时候,我们不可能可以预计我们到底需要多少个变量,这个时候我们就需要动态的来创建变量.就需要用到指针.
-- 用vector是不是比指针要好理解和好操作点呢?

数据结构.数据结构是离不开指针的,无论是链表,树,还是图,都是离不开指针的.
winhkey 2005-12-11
  • 打赏
  • 举报
回复
把指针看成一个文档的快捷方式
sankt 2005-12-11
  • 打赏
  • 举报
回复
//不好意思 上面有误。

使用指针和goto语句一样,会导致程序难以理解。使用不当很容易指向错误的地方
但是,如果谨慎地使用指针,会写出非常简洁和清晰的程序
sankt 2005-12-11
  • 打赏
  • 举报
回复
使用指针和goto语句,会导致程序难以理解,很容易指向错误的地方
但是,如果谨慎地使用指针,会写出非常简洁和清晰的程序
lbeast 2005-12-11
  • 打赏
  • 举报
回复
dx30611能具体说说效率高的例子嘛?
加载更多回复(6)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧