初学者指针指南.doc

初学者指针指南.doc

ID:28506364

大小:79.50 KB

页数:23页

时间:2018-12-10

初学者指针指南.doc_第1页
初学者指针指南.doc_第2页
初学者指针指南.doc_第3页
初学者指针指南.doc_第4页
初学者指针指南.doc_第5页
资源描述:

《初学者指针指南.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、初学者指针指南何为指针?  指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。开始  如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针:int*pNumberOne;int*pNumberTwo;  注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。  现在,让我们把这些指针指向一些实际的值吧:pNumberOne=&som

2、e_number;pNumberTwo=&some_other_number;  “&”标志应该读作“theaddressof(……的地址)”,它的作用是返回一个变量的内存地址,而不是这个变量本身。那么在这个例子中,pNumberOne就是some_number的地址,亦称作pNumberOne指向some_number。  现在,如果我们想使用some_number的地址的话,那么我们就可以使用pNumberOne了。如果我们希望经由pNumberOne而使用some_number的值的话,我们可以用*pNumberOne。“*”应该读作“thememorylocationpointedto

3、by(由……指向的内存位置)”,它用来取得指针所指向的值。不过指针声明的情况例外,如“int*pNumber”。到现在都学到什么了(一个例子):  咻!要理解的东西太多了,所以在此我建议,如果你还是不理解以上的概念的话,那么最好再通读一遍;指针是一个复杂的主题,要掌握它是要花些时间的。  这里有一个示例,解说了上面讨论的那些概念。它是由C编写成,并不带有C++的那些扩展。#includevoidmain(){ //声明变量: intnNumber; int*pPointer; //现在,给它们赋值: nNumber=15; pPointer=&nNumber; //打印nNu

4、mber的值: printf("nNumberisequalto:%d",nNumber); //现在,通过pPointer来控制nNumber: *pPointer=25; //证明经过上面的代码之后,nNumber的值已经改变了: printf("nNumberisequalto:%d",nNumber);}  请通读并编译以上代码,并确信你已经弄懂了它是如何工作的。然后,当你准备好了以后,就往下读吧!陷阱!  看看你是否能指出以下程序的缺陷:#includeint*pPointer;voidSomeFunction(){ intnNumber; nNumber=

5、25;    //使pPointer指向nNumber: pPointer=&nNumber;}voidmain(){ SomeFunction();//让pPointer指向某些东西 //为什么这样会失败? printf("Valueof*pPointer:%d",*pPointer);}  这个程序首先调用SomeFunction函数,在其中创建了一个名为nNumber的变量,并且使pPointer指向这个变量。那么,这就是问题之所在了。当函数结束的时候,由于nNumber是一个本地变量,那么它就会被销毁。这是因为当语句块结束的时候,块中定义的本地变量都会被销毁。这就意味着当SomeF

6、unction返回到main()的时候,那个变量就已经被销毁了,所以pPointer将会指向一个不再属于本程序的内存位置。如果你不懂这一点,那么你应该去读一读有关本地变量、全局变量以及作用域的东西,这些概念非常重要。  那么,如何解决这个问题呢?答案是使用一种名为动态分配的技术。请注意:在这一点上,C和C++是不同的。既然大多数开发者正在使用C++,那么下面的代码就使用C++来编写。动态分配  动态分配也许可以算是指针的关键技术了。它被用于在没有定义变量的情况下分配内存,然后由一个指针指向这段内存。虽然这个概念好像很让人糊涂,其实它很简单。以下的代码解说了如何为一个整数分配内存空间:int*p

7、Number;pNumber=newint;  第一行代码声明了一个指针pNumber,第二行代码分配了一个整数的空间,并使pNumber指向这一段新分配的内存。下面是另外一个例子,这一次使用了一个double:double*pDouble;pDouble=newdouble;  这些规则是相同的T,所以你应该可以很容易地掌握。  动态分配和本地变量的不同点是:你分配的内存在函数返回和语句块结束的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。