本文地址: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++<<"\n";
}
} int _tmain(int argc, _TCHAR* argv[])
{
//cout<<"hello world \n";
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++<<"\n";
}
} void fuc(int m, int& n)
{
m++;
n++;
} int _tmain(int argc, _TCHAR* argv[])
{
int a = 3;
int b = 3;
//cout<<"hello world \n";
fuc(a, b);
cout<<"a=="<<a<<" ,b=="<<b<<"\n";
system("pause");
return 0;
}

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

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

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

[C++学习历程]基础部分 C++中的函数学习的更多相关文章

  1. [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/20406269 作者:sushengmiyan // sushengmiyanTest. ...

  2. [C++学习历程]基础部分 C++中的指针数组和结构

    作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/19938177 一.指针 对学习C++来说,指针是一项重要内容,以前,教 ...

  3. [C++学习历程]基础部分 C++中的类型和声明

    前面搭起了C++的VS环境,可以在VS中编写C++代码了,也运行了最简单的一个程序Helloworld.那么我们该怎么才能写出功能强大的程序,怎样才能随心所欲的应用呢,那就需要重新回头来,从C++基础 ...

  4. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...

  5. java基础62 JavaScript中的函数(网页知识)

    1.JavaScript中,函数的格式 function 函数名(形参列表){ 函数体; } 2.JavaScript中,函数需要注意的细节 1.在javaScript中,函数定义形参时,是不能使用v ...

  6. 学习Python3基础知识过程中总结

    print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

  7. 5. openCV中常用函数学习

    一.前言 经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大.缩小和移动):2 样本数据的选择:3 数据归一化 ...

  8. 从小白到区块链工程师:第一阶段:Go语言中的函数学习(6)

    一. 为什么要有函数 我们在以后的编码过程中,有很多代码会重复出现,这些重复实现的代码,我们不需要每次需要用到的时候都编写,我们将重复的代码封装起来.比如在一个网站中,无论是消费的金额还是积分的积累等 ...

  9. python中format函数学习笔记

    简而言之,format函数就是用{}来代替之前的输出字符时使用的% print('my name is %s and I am %d years old' % ('porsche',23)) 下面详细 ...

随机推荐

  1. Map value类型不同的写法

    Map value类型不同的写法 Map<String, Object> accountMap=new HashMap<String, Object>(); int userI ...

  2. 利用gulp把本地文件移动到指定待发布文件夹

    一.目标 把本地的文件移动到待发布的文件中,把static_grab文件中file.txt所列文件列表移动到beta对应文件夹中: 二.实现 var gulp = require('gulp'), w ...

  3. css修改浏览器默认的滚动条样式

    //滚动条样式 ::-webkit-scrollbar { width: 10px; } /* 垂直滚动条的滑动块 */ ::-webkit-scrollbar-thumb:vertical { bo ...

  4. rhel7 配置普通用户使用sudo

    rhel服务器版本安装之后,默认创建的用户不能使用sudo.使用sudo,会提示 user1 is not in the sudoers file. This incident will be rep ...

  5. CSS 常用的命名规则

    (1)页面结构 容器: container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目:column ...

  6. 【C#复习总结】匿名类型由来

    1 属性 这得先从属性开始说,为什么外部代码访问对象内部的数据用属性而不是直接访问呢,这样岂不是更方便一些,但是事实证明直接访问是不安全的.那么,Anders Hejlsberg(安德斯·海尔斯伯格) ...

  7. Make things beautiful again !

    在知乎有一个问题:如何让大脑休息放松? 我曾回答说:整理凌乱的文件夹(电脑的). 其实最近特别烦恼,似乎所有人都不按常理出牌,似乎所有事都不按套路发展.经营一个企业的压力,加上长期没有来自" ...

  8. ORACLE数据库管理常用查询语句

    /*查看表空间的名称及大小*/ SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...

  9. FORM内置系统变量

    常用 和输入焦点有关: SYSTEM.CURSOR_ITEM:返回系统当前正在操作的项名. SYSTEM.CURSOR_RECORD:返回系统当前正在操作的记录行号. SYSTEM.CURSOR_BL ...

  10. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

    写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...