zhengjian

很多人在刚开始学习C语言的时候也一定被指针这种东西折磨的头疼,定义指针这种特殊的数据结构一定有他的特殊用途。一般定义一维的指针可以参考下面的用法:

  

 

应该是一种最简单的指针的赋值形式,在实际应用中指针的这种赋值的形式并没有体现出太多的优势,往往我们会这样使用指针:


像这种用法在指针中是很常见的使用,可以使得代码变得更加的简洁。对指针的随意的用法往往会带来很多安全问题,比如指针的越界访问内存,或者堆栈指针指向了其他的内存区域,这些都是十分危险的。对于操作系统而言,这些细节的地方出错往往会造成很致命的问题。所以对于这种需要频繁申请和调用内存的指针在C语言中使用了free(ptr);这种操作和C++中的delete(ptr)基本意义相同。

对于指针往往会有这样的用法

是不是感觉有点头大了?首先我们定义了*fp1和*fp2;这个函数的返回值便是两个指针空值的乘积,同时返回类型还为指针类型。

在有的程序中我们还会见到这种写法

见到这种写法是不是感觉都要吐血了,在这里定义的是一个volatile类型的参数,首先我们要知道volatile类型的参数在内存中是没有被优化的,换而言之就是每时每刻它的值都会不相同,所以在这里我们的返回的值是不确定的。

当然在指针的世界里,指针还可以指向结构体,类,这些都是链表的基础,在这里我们不加以讨论。

还有一种情况,当指针和const 连用的时候情况又会变得复杂多了。比如下面的这种情况:

 

在上面中只有第二个指针的值可以修改,其他的都不能动。呵呵呵,想知道为什么自己翻翻C语言的书

以后遇到其他的指针我们再讨论吧!!

分类:

技术点:

相关文章: