指针(上)
来源:互联网 发布:因子分析数据标准化 编辑:程序博客网 时间:2024/04/29 02:56
从今天起,我会不定期的就某一科目做阶段总结。当然这些都是极浅显的,不会在任何栏目里发表,仅仅是为了能在准备、成文这样一分总结的过程当中更加深入的理解这一部分的内容。该方法目前正在实验中,如效果不理想应随时做出调整。这些文章没有先后顺序之分,只是看到哪写到哪,既然是写给自己的,顺序上就不要求那么严格。
其实到了函数部分,C语言才真正精彩起来,之前的平铺直叙到了这里仿佛一下跌宕起伏起来。当然我今天要说的是指针,之所以在函数之前先说指针,因为今天的内容正好就是指针部分。由于涉及到指针数组的部分比较晦涩难懂,所以我把指针的内容分两部分完成,今天着重解决的是指针的一些基本特性,明天完成他的高级部分。
所有人在提起C的时候都会说:想要学好C语言,那么一定得学好指针。在没学好这门语言之前,没资格对这句话提出异议,所以我会坚定不移的按着前人所指的方向前进。对于指针来说,其本身提供了强大灵活的数据操纵方式,使用指针可以更好的完成某些工作,而如果不使用指针,有些工作则会无法完成。如果说函数为C语言搭建起了一个结构化的平台,那么指针的意义就在于,他最大化的维持了所有运行在这个平台上的数据类型(尤其是数组)的秩序。而动态的“维持”要比静态的“平台”更复杂,这也注定了在学习他的过程当中要付出比之前大很多的努力。如果说函数给人的初印象是兴奋和赞叹,那么指针所给人的初印象则更多的是迷茫。
我们对C语言已经有了一个初步的认识,知道了变量是用来存储数据的内存单元。在PC的内存当中,每一个内存单元都有其唯一的一个内存地址,这是我们在之前没有接触到的。而假如知道了某一个变量的地址,我们就可以创建另一个变量来存储前一个变量的地址。暂且先不说这样做的意义何在,总之我们现在只要明白,指针同样也是一个变量,他是一个用来存储另外一个变量的地址的变量。就象“只有存储了数据的变量才有意义”一样,只有存储了地址的指针才有意义。
指针的初始化一直是个问题。和变量一样,指针也遵循“先定义后使用”的原则。假如忘记定义指针,后果将会是很严重的,因为指针存储的是某一个变量的地址,当调用一个未定义的指针时,他会随即的产生一个地址并带如程序,这个地址有可能指向某一个系统程序,严重的话可以使系统瘫痪。
对指针的声明:typename *pointer
初始化:pointer=&variable
指针的最大的用途在于对数组的操纵,我假设我们已经对数知识是有了一定的了解。当然一个指针不可能指向数组当中的所有元素,所以我们让指针指向数组的头元素,也就是说,指针当中所存放的,是数组中第一个元素的内存地址,而由于数组具有顺序排列的特性,其他数组元素便可以相继找到自己在内存当中的位置。不带括号的数组是一个指针,比如data是data[]的首地址指针,也可以用&data[0]的形式来表示。
从某种意义上讲,指针可以代替一组数组,这一点在数组作为函数参数的时候尤为重要。因为函数只允许传递单个数值而不能是数组,所以在函数的传递过程中,函数的返回值是一个指针,也就是数组的首地址,根据这个首地址可以进而得知数组中每个元素的地址,使得函数可以调用整个数组。那么又出现一个问题:如何让函数知道所调用的数组的长度呢?办法有两个,一是可以在数组的最后一个元素存储一个特殊值来标记数组长度,然而这样做必须要在数组末尾设定一个保留值,因此降低了在数组中存储数据的灵活性。我们一般采用第二种办法,将数组长度直接作为一个参数传递给函数,这种办法更灵活,不会对数组本身产生任何影响。
先写到这,第一次写关于程序的文章,感觉还是很累。之所以会这样,还是因为对程序本身的不熟悉,希望能通过这个总结的方法使我更快的对程序熟悉起来,明天是指针(下),希望能写得顺畅些并且精彩些,看明天的了。
其实到了函数部分,C语言才真正精彩起来,之前的平铺直叙到了这里仿佛一下跌宕起伏起来。当然我今天要说的是指针,之所以在函数之前先说指针,因为今天的内容正好就是指针部分。由于涉及到指针数组的部分比较晦涩难懂,所以我把指针的内容分两部分完成,今天着重解决的是指针的一些基本特性,明天完成他的高级部分。
所有人在提起C的时候都会说:想要学好C语言,那么一定得学好指针。在没学好这门语言之前,没资格对这句话提出异议,所以我会坚定不移的按着前人所指的方向前进。对于指针来说,其本身提供了强大灵活的数据操纵方式,使用指针可以更好的完成某些工作,而如果不使用指针,有些工作则会无法完成。如果说函数为C语言搭建起了一个结构化的平台,那么指针的意义就在于,他最大化的维持了所有运行在这个平台上的数据类型(尤其是数组)的秩序。而动态的“维持”要比静态的“平台”更复杂,这也注定了在学习他的过程当中要付出比之前大很多的努力。如果说函数给人的初印象是兴奋和赞叹,那么指针所给人的初印象则更多的是迷茫。
我们对C语言已经有了一个初步的认识,知道了变量是用来存储数据的内存单元。在PC的内存当中,每一个内存单元都有其唯一的一个内存地址,这是我们在之前没有接触到的。而假如知道了某一个变量的地址,我们就可以创建另一个变量来存储前一个变量的地址。暂且先不说这样做的意义何在,总之我们现在只要明白,指针同样也是一个变量,他是一个用来存储另外一个变量的地址的变量。就象“只有存储了数据的变量才有意义”一样,只有存储了地址的指针才有意义。
指针的初始化一直是个问题。和变量一样,指针也遵循“先定义后使用”的原则。假如忘记定义指针,后果将会是很严重的,因为指针存储的是某一个变量的地址,当调用一个未定义的指针时,他会随即的产生一个地址并带如程序,这个地址有可能指向某一个系统程序,严重的话可以使系统瘫痪。
对指针的声明:typename *pointer
初始化:pointer=&variable
指针的最大的用途在于对数组的操纵,我假设我们已经对数知识是有了一定的了解。当然一个指针不可能指向数组当中的所有元素,所以我们让指针指向数组的头元素,也就是说,指针当中所存放的,是数组中第一个元素的内存地址,而由于数组具有顺序排列的特性,其他数组元素便可以相继找到自己在内存当中的位置。不带括号的数组是一个指针,比如data是data[]的首地址指针,也可以用&data[0]的形式来表示。
从某种意义上讲,指针可以代替一组数组,这一点在数组作为函数参数的时候尤为重要。因为函数只允许传递单个数值而不能是数组,所以在函数的传递过程中,函数的返回值是一个指针,也就是数组的首地址,根据这个首地址可以进而得知数组中每个元素的地址,使得函数可以调用整个数组。那么又出现一个问题:如何让函数知道所调用的数组的长度呢?办法有两个,一是可以在数组的最后一个元素存储一个特殊值来标记数组长度,然而这样做必须要在数组末尾设定一个保留值,因此降低了在数组中存储数据的灵活性。我们一般采用第二种办法,将数组长度直接作为一个参数传递给函数,这种办法更灵活,不会对数组本身产生任何影响。
先写到这,第一次写关于程序的文章,感觉还是很累。之所以会这样,还是因为对程序本身的不熟悉,希望能通过这个总结的方法使我更快的对程序熟悉起来,明天是指针(下),希望能写得顺畅些并且精彩些,看明天的了。
- 指针(上)
- Lecture 6 指针(上)
- 指针学习笔记(上)
- c++智能指针(上)
- 指针定义完整步骤(连上一篇野指针)
- C语言---从指针到二重指针(上)
- C++primer 4.2 指针(上)
- Day7(上).二级指针实战
- 011-指针(上)-C语言笔记
- IOS开发笔记11-指针(上)
- 专题四-指针和数组(上)
- C++中的智能指针(上)
- 指针(上)--指针存放,数组指针及const的了解
- 指针和数组(上)
- C语言 * 指针(上)
- C语言 指针(上)
- 指针详解(上)
- 指针 上 :什么是指针,指针类型,指针运算等等
- 网络命令一览表(绝对实用)
- 7招帮助你的网站提速
- 把你的XP和2000所带的IIS连接数突破10个
- RSS技术在行业中的应用
- 关于版权声明的写法
- 指针(上)
- 有趣的定律6. 墨菲定律
- 关于DataRow和DataColumn的一点个人简单理解
- DataGrid基于Access的快速分页法
- 软交换技术的发展
- C++的沉迷与爱恋
- ASP.NET 2.0中隐藏listbox的某一项
- 透明网关ProxyARP在APN上的简单应用
- 中国车就是牛[转自人民网]