<b>C++中指针入门</b>[VC/C++编程]
本文“<b>C++中指针入门</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
什么是指针?
其实指针就像是别的变量一样,所差别的是普通的变量包含的是实际的真实的数据,而指针是一个指导器,它奉告程序在内存的哪块区域可以找到数据.这是一个非常重要的概念,有很多程序和算法都是环绕指针而计划的,如链表.
开始学习
若何定义一个指针呢?就像你定义一个别的变量一样,只不过你要在指针名字前加上一个星号.我们来看一个例子:下面这个程序定义了两个指针,它们都是指向整型数据.
int* pNumberOne;
int* pNumberTwo;
你注意到在两个变量名前的“p”前缀了吗?这是程序员普通在定义指针时的
一个习惯,以提高便程序的阅读性,表示这是个指针.目前让我们来初始化这两个指针:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
&号读作“什么的地址”,它表示返回的是变量在内存中的地址而不是变量本身的值.在这个例子中,pNumberOne 等于some_number的地址,所以目前pNumberOne指向some_number. 假如目前我们在程序中要用到some_number,我们便可以利用pNumberOne.
我们来学习一个例子:
在这个例子中你将学到很多,假如你对指针的概念一点都不理解,我倡议你多看几遍这个例子,指针是个很复杂的东西,但你会很快掌握它的.
这个例子用以加强你对上面所介绍内容的理解.它是用C编写的(注:原英文版是用C写的代码,译者重新用C++改写写了全部代码,并在DEV C++ 和VC++中编译通过!)
#include <iostream.h>
void main()
{
// 声明变量:
int nNumber;
int *pPointer;
// 目前给它们赋值:
nNumber = 15;
pPointer = &nNumber;
//打印出变量nNumber的值:
cout<<"nNumber is equal to :"<< nNumber<<endl;
// 目前通过指针改变nNumber的值:
*pPointer = 25;
//证明nNumber已经被上面的程序改变
//重新打印出nNumber的值:
cout<<"nNumber is equal to :"<<nNumber<<endl;
}
通读一下这个程序,编译并运行它,务必懂得它是怎样工作的.假如你完成了,预备好,开始下一小节.
陷井!
试一下,你能找出下面这段程序的错误吗?
#include <iostream.h>
int *pPointer;
void SomeFunction();
{
int nNumber;
nNumber = 25;
//让指针指向nNumber:
pPointer = &nNumber;
}
void main()
{
SomeFunction(); //为pPointer赋值
//为什么这里失利了?为什么没有得到25
cout<<"Value of *pPointer: "<<*pPointer<<endl;
}
这段程序先调用了SomeFunction函数,成立了个叫nNumber的变量,接着让指针pPointer指向了它.但是问题出在哪儿呢?当函数完毕后,nNumber被删掉了,
因为这一个部分变量.部分变量在定义它的函数履行完后城市被系统自动删掉.也就是说当SomeFunction 函数返回主函数main()时,这个变量已经被删掉,但pPointer还指着变量曾经用过的但目前已不属于这个程序的区域.假如你还不懂得,你可以再读读这个程序,注意它的部分变量和全局变量,这些概念都非常重要.
但这个问题怎么办理呢?答案是动态分配技术.注意这在C和C++中是差别的.由于大大都程序员都是用C++,所以我用到的是C++中常用的称谓.
以上是“<b>C++中指针入门</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |