zoukankan      html  css  js  c++  java
  • [C++学习历程]基础部分 C++中的函数学习

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/20305815

    作者:sushengmiyan

    一。静态变量:

    局部变量是线程到达定义的地方的时候进行初始化,如果定义在函数中,那么每次函数调用的时候,都会进行初始化,函数的每个调用保留着一个副本,对于静态变量来说,只在第一次调用的时候初始化。通过下面一个例子可以细细体会这个区别:

    // sushengmiyanTest.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void f(int a)
    {
      while(a--)
      {
    	  static int n = 0;
    	  int x = 0;
    	  cout<<"n=="<<n++<<" ,x=="<<x++<<"
    ";
      }
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	//cout<<"hello world 
    ";
    	f(3);
    	system("pause");
    	return 0;
    }
    

    通过运行结果可以看出,n是静态变量,虽然每次调用函数了,但是只是一次初始化,后面执行n++之后,值就是n++的值,再次调用也不会初始化,对于x来说是局部变量,每次调用都会初始化一下,所以每次都是0.


    二。参数传递

    // sushengmiyanTest.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void f(int a)
    {
      while(a--)
      {
    	  static int n = 0;
    	  int x = 0;
    	  cout<<"n=="<<n++<<" ,x=="<<x++<<"
    ";
      }
    }
    
    void fuc(int m, int& n)
    {
    	m++;
    	n++;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int a = 3;
    	int b = 3;
    	//cout<<"hello world 
    ";
    	fuc(a, b);
    	cout<<"a=="<<a<<" ,b=="<<b<<"
    ";
    	system("pause");
    	return 0;
    }
    

    先看这个例子,结果如下:

    通过这例子可以看出,经过函数调用,初始化的时候同样是3 ,第一个参数是形式参数,传入之后对其进行操作,只在函数内部发生作用,函数外部,值不会发生变化,对于第二个参数,是传地址的,就是我修改了之后呢,内存中这个值也就发生了变化,再获取的时候就是函数内部操作之后的数值了。

    所以输出的是a = 3,b=4.




  • 相关阅读:
    iOS sqlite3
    NSObject常用方法
    驱动项目设置中混淆点小记
    globalsign代码签名最新步骤
    Web学习资源及手册查询整理
    H5基于iScroll实现下拉刷新,上拉加载更多
    移动端meta标签
    一、开发过程中遇到的js知识点总结(1)
    vue API 知识点(4) --- 指令、特殊 attribute 、内置组件
    vue API 知识点(3) --- 实例 总结
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152529.html
Copyright © 2011-2022 走看看