1

学c语言学到了指针部分,看到书上举得例子,用指针运算来取数组元素,或者取指定字符串中的单个字符等等,但是我看c语言明明提供了下标取值这种语法,为什么还要用指针呢?他在实际项目中起什么作用?(或者说那种情况下需要程序员手动操作内存?求举个实际的,具有应用型的例子)

昌维 4.2k
2016-09-29 提问
6 个回答
1

不用指针写个链表试试

1

~~可以写成静态链表

araraloren · 2016年09月30日

展开评论
0

单片机操作寄存器

0

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
  栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
  堆:就是那些由 new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
  自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
  全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
  常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。

举一个简化的例子浏览图片, 在硬盘里的图片数据会先存到内存的堆中,这堆可以通过指针去访问堆中的地址进行图片的操作,关闭程序,相关堆中的内存释放。

其实很多书里关于指针说的都有些笼统,这样就会遇到你这种问题。

而且动态语言有了写多了,大家基本上不会去关心会变量会在栈里, 什么变量会在堆里了。

建议把内存模型这些知识补一补

参考网址

http://chenqx.github.io/2014/...

0

指针在数据结构里是个好东西,通过调用指针可以对函数内的数据进行储存,访问,更改等一系列操作

0

不要着急,慢慢地你就发现指针多么有用了。数组一旦定义是定长的线性的,如果要求你存不定长的数据,你就不能用数组了吧?而用指针就能构造各种不定常的灵活的数据结构,比如线性链表,循环链表,广义表,十字链表(图的一种存储结构),邻接多重表等。还有函数指针,把它指向回调函数传给消息循环可以做很多事情啊。。。

所以,不着急,慢慢来,存在便有它的一些道理,慢慢学习发现就好了。上面列了很多名词,等你之后学数据结构就知道了。建议学有余力可以看看《C和指针》。

0

搜索“面向对象C”,弄明白了之后你会学到指针的用法,回调函数的用法,并且你的编程技巧会上一个台阶

撰写答案

你可能感兴趣的

推广链接