设为首页 加入收藏

TOP

6.2.4 利用指针改变值(2)
2013-10-07 00:48:57 来源: 作者: 【 】 浏览:63
Tags:6.2.4 利用 指针 改变

6.2.4 利用指针改变值(2)

2.开始定义main()函数并创建一些变量。

  1. int main() {  
  2.     int a = -12;  
  3.     float b = 78.53;  
  4.     char c = 'D';  
  5.     unsigned long d = 1904856026;  
  6.     std::string e = "arglebargle"

你可以使用以前用过的变量,也可以使用不同的变量。为了更加全面一些,我们在这个示例程序里增加了一个string类型的变量。

3.输出各个变量的初始值。

  1. std::cout << "The value of a is initially " 
  2. << a << "\n";  
  3. std::cout << "The value of b is initially " 
  4. << b << "\n";  
  5. std::cout << "The value of c is initially " 
  6. << c << "\n";  
  7. std::cout << "The value of d is initially " 
  8. << d << "\n";  
  9. std::cout << "The value of e is initially " 
  10. << e << "\n"

4.为每个变量创建一个指针。

  1. int *aPointer = &a;  
  2. float *bPointer = &b;  
  3. char *cPointer = &c;  
  4. unsigned long *dPointer = &d;  
  5. std::string *ePointer = &e; 

你应该见过这段代码--这里只多了一个字符串指针,但它与其他指针没什么两样。现在,每个指针均分别保存着相应的变量的地址。

5.通过指针来改变各个变量的值。

  1. *aPointer = 5462;  
  2. *bPointer = -3.143022489;  
  3. *cPointer = 'Z';  
  4. *dPointer = 1604326026;  
  5. *ePointer = "foofarah"

要想利用指针来改变一个变量的值,需要在指针的名字前加上一个星号(*)。

6.再次输出各个变量的值。

  1. std::cout << "The value of a is now " 
  2. << a << "\n";  
  3. std::cout << "The value of b is now " 
  4. << b << "\n";  
  5. std::cout << "The value of c is now " 
  6. << c << "\n";  
  7. std::cout << "The value of d is now " 
  8. << d << "\n";  
  9. std::cout << "The value of e is now " 
  10. << e << "\n"

这些cout语句将显示步骤5里的代码所做的修改。

7.完成main()函数。

  1. std::cout << "Press Enter or Return to continue.\n";  
  2.     std::cin.get();  
  3.     return 0;  

8.把这个文件保存为pointer2.cpp,然后编译并运行这个程序(如图6-14所示)。

 
图6-14 利用指针"解引用"
处理改变不同类型的变量的值

"提示

一定要牢记这一事实:指针所保存的是内存中的一个地址。它不保存数据值本身,也不负责为了保存该数据值而分配内存。因此,应该确保指针对应一个已经存在的变量或一块已分配的内存。

星号有两种用途,这往往会让初学者感到困惑。它的第一种用途是创建指针:

  1. int *myPointer = &myInt; 

它的第二种用途是对指针进行解引用:

  1. *myPointer = 230949;  
  2. // *myPointer = myInt 

C++(www.cppentry.com)允许多个指针有同样的值。

  1. int *p1 = &myInt;  
  2. int *p2 = &myInt; 

现在,p1等于p2,它们都等于&myInt(myInt变量的地址)。进一步说,*p1等于*p2,它们都等于myInt变量的值。

C++(www.cppentry.com)支持无类型(void)指针,即没被声明为某种特定类型的指针,如下所示:

  1. void *pointerName; 

在对一个无类型指针进行解引用前,必须先把它转换为一种适当的数据类型。我们之所以会在这里提到无类型指针,是因为你可能会在其他地方见到它们,但它们并不是为初学者准备的。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.1 数组(1) 下一篇6.2.4 利用指针改变值(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: