WEB开发网
开发学院软件开发VC 初学者指针指南 阅读

初学者指针指南

 2006-04-11 22:54:17 来源:WEB开发网   
核心提示: 这里有一个示例,解说了上面讨论的那些概念,初学者指针指南(2),它是由C编写成,并不带有C++的那些扩展,如果你不懂这一点,那么你应该去读一读有关本地变量、全局变量以及作用域的东西,#include <stdio.h>void main(){ // 声明变量:

这里有一个示例,解说了上面讨论的那些概念。它是由C编写成,并不带有C++的那些扩展。

#include <stdio.h>
void main()
{
  // 声明变量:
  int nNumber;
  int *pPointer;
  // 现在,给它们赋值:
  nNumber = 15;
  pPointer = &nNumber;
  // 打印nNumber的值:
  printf("nNumber is equal to : %d\n", nNumber);
  // 现在,通过pPointer来控制nNumber:
  *pPointer = 25;
  // 证明经过上面的代码之后,nNumber的值已经改变了:
  printf("nNumber is equal to : %d\n", nNumber);
}

请通读并编译以上代码,并确信你已经弄懂了它是如何工作的。然后,当你准备好了以后,就往下读吧!

陷阱!

看看你是否能指出以下程序的缺陷:

#include <stdio.h>
int *pPointer;
void SomeFunction()
{
  int nNumber;
  nNumber = 25;  
  // 使pPointer指向nNumber:
  pPointer = &nNumber;
}
void main()
{
  SomeFunction(); // 让pPointer指向某些东西
  // 为什么这样会失败?
  printf("Value of *pPointer: %d\n", *pPointer);
}

这个程序首先调用SomeFunction函数,在其中创建了一个名为nNumber的变量,并且使pPointer指向这个变量。那么,这就是问题之所在了。当函数结束的时候,由于nNumber是一个本地变量,那么它就会被销毁。这是因为当语句块结束的时候,块中定义的本地变量都会被销毁。这就意味着当SomeFunction返回到main()的时候,那个变量就已经被销毁了,所以pPointer将会指向一个不再属于本程序的内存位置。如果你不懂这一点,那么你应该去读一读有关本地变量、全局变量以及作用域的东西,这些概念非常重要。

上一页  1 2 3 4 5 6 7  下一页

Tags:初学者 指针 指南

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接