C++中指针入门
"<<nMyNumber<<endl; //得到了结果23吗?问题出在哪儿? } 问题出在函数AddFive里用到的Number是变量nMyNumber的一个副本而传递给函数,而不是变量本身。因此, " Number = Number + 5" 这一行是把变量的副本加了5,而原始的变量在主函数main()里依然没变。试着运行这个程序,自己去体会一下。要解决这个问题,我们就要传递一个指针到函数,所以我们要修改一下函数让它能接受指针:把''void AddFive(int Number)'' 改成 ''void AddFive(int*Number)'' 。下面就是改过的程序,注意函数调用时要用&号,以表示传递的是指针:
试着自己去运行它,注意在函数AddFive的参数Number前加*号的重要性:它告诉编译器,我们是把指针所指的变量加5。而不并指针自己加5。 最后,如果想让函数返回指针的话,你可以这么写: int * MyFunction(); 在这句里,MyFunction返回一个指向整型的指针。 指向类的指针 指针在类中的操作要格外小心,你可以用如下的办法定义一个类:
接着你就可以定义一个MyClass 类的变量了:
你应该已经知道怎样去定义一个指针了吧:
接着你可以分配个内存空间给它:
注意,问题出现了。你打算怎样使用这个指针呢,通常你可能会写''thing.m_Number'',但是thing是类吗,不,它是一个指向类的指针,它本身并 不包含一个叫m_Number的变量。所以我们必须用另一种方法:就是把''.''(点号)换成 -> ,来看下面的例子:
指向数组的指针 你也可以让指针指向一个数组,按下面的方法操作:
程序会创建一个指针pArray,让它指向一个有六个元素的数组。另外一种方法,不用动态分配:
注意,&MyArray[0] 也可以简写成 MyArray ,都表示是数组的第一个元素地址。但如果写成pArray = &MyArray可能就会出问题,结果是 pArray 指向的是指向数组的指针(在一维数组中尽管与&MyArray[0]相等),而不是你想要的,在多维数组中很容易出错。 在数组中使用指针 一旦你定义了一个指向数组的指针,你该怎样使用它呢?让我们来看一个例子,一个指向整型数组的指针:
如果让指针指向数组元素中的下一个,可以用pArray++.也可以用你应该能想到的pArray + 1,都会让指针指向数组的下一个元素。要注意的是你在移动指针时,程序并不检查你是否已经移动地超出了你定义的数组,也就是说你很可能通过上面的简单指针加操作而访问到数组以外的数据,而结果就是,可能会使系统崩溃,所以请格外小心。 当然有了pArray + 1,也可以有pArray - 1,这种操作在循环中很常用,特别是while循环中。 另一个需要注意 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |