您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VC > 正文
Visual C++初学者指针学习指南
[文章信息]
作者:CQFZ
时间:2005-02-01
出处:天极BLOG
责任编辑:方舟
[文章导读]
指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据……
advertisement
热点推荐
· 使用VC++ ATL实现Office的COM插件
· 软件多媒体教程录制方法详解
· 1月31日软件精选 邮箱及IE安全设置指南
· “金闪客奖”获奖名单隆重公布
· PS色彩调整简明教程:色阶
[正文]

上一页  1 2 3 4 5  下一页

  向函数传递指针

  向函数传递指针的技术非常有用,但是它很容易掌握(译注:这里存在必然的转折关系吗?呃,我看不出来,但是既然作者这么写了,我又无法找出一个合适的关联词,只好按字面翻译了)。如果我们要编写一段程序,在其中要把一个数增加5,我们可能会像这么写:

  #include

  void AddFive(int Number)

  {

   Number = Number + 5;

  }

  void main()

  {

   int nMyNumber = 18;

   printf("My original number is %d\n", nMyNumber);

   AddFive(nMyNumber);

   printf("My new number is %d\n", nMyNumber);

  }

  可是,这段程序AddFive中的Number是传递到这个函数中的nMyNumber的一份拷贝,而不是nMyNumber本身。因此,“Number = Number + 5”这一行则是向这份拷贝加上了5,而main()中的原始变量并没有任何变化。你可以运行这个程序试着证明这一点。

  对于这个程序,我们可以向函数传递这个数字内存地址的指针。这样,我们就需要修改这个函数,使之能接收一个指向整数的指针。于是,我们可以添加一个星号,即把“void AddFive(int Number)”改为“void AddFive(int* Number)”。下面是这个修改过了的程序,注意到我们已经将nMyNumber的地址(而不是它本身)传递过去了吗?此处改动是添加了一个“&”符号,它读作(你应该回忆起来了)“the address of(……的地址)”。

  #include

  void AddFive(int* Number)

  {

   *Number = *Number + 5;

  }

  void main()

  {

   int nMyNumber = 18;

   printf("My original number is %d\n", nMyNumber);

   AddFive(&nMyNumber);

   printf("My new number is %d\n", nMyNumber);

  }

  你可以试着自己编写一个程序来证明这一点。注意到AddFive函数中Number之前的“*”的重要性了吗?这就是告知编译器我们要在指针Number指向的数字上加5,而不是向指针本身加5。

  最后要注意的一点是,你亦可以在函数中返回指针,像下面这个样子:

  int * MyFunction();

  在这个例子中,MyFunction返回了一个指向整数的指针。


上一页  1 2 3 4 5  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • VC中利用FTP协议实现多线程断点续传
  • 防止Visual C++应用程序缓冲区溢出
  • MFC程序员的WTL指南之WTL 界面基类
  • MFC程序员的WTL开发指南之ATL界面类
  • ATL布幔下的秘密之窗口类的秘密
  • 安捷伦在华投资将超1亿美元 押宝手机市场
  • 台积电获中芯国际1.75亿美元 赢面子赔里子
  • 海尔集团成功海外借壳 张瑞敏未入管理层
  • 西南贝尔终结AT&T 全美最大电信运营商诞生
  • DTS否认在华违法经营 反驳专利许可垄断说
  • 白宫闹大笑话 布什任职演说中文版成搞笑版
  • 盖茨巴菲特赌美元贬值 最富二人组一唱一和
  • 茁壮网络获Macromedia授权 为内地首家企业
  • Advertisement