[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++<<"\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++中的函数学习的更多相关文章
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
本文地址:http://blog.csdn.net/sushengmiyan/article/details/20406269 作者:sushengmiyan // sushengmiyanTest. ...
- [C++学习历程]基础部分 C++中的指针数组和结构
作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/19938177 一.指针 对学习C++来说,指针是一项重要内容,以前,教 ...
- [C++学习历程]基础部分 C++中的类型和声明
前面搭起了C++的VS环境,可以在VS中编写C++代码了,也运行了最简单的一个程序Helloworld.那么我们该怎么才能写出功能强大的程序,怎样才能随心所欲的应用呢,那就需要重新回头来,从C++基础 ...
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- java基础62 JavaScript中的函数(网页知识)
1.JavaScript中,函数的格式 function 函数名(形参列表){ 函数体; } 2.JavaScript中,函数需要注意的细节 1.在javaScript中,函数定义形参时,是不能使用v ...
- 学习Python3基础知识过程中总结
print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...
- 5. openCV中常用函数学习
一.前言 经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大.缩小和移动):2 样本数据的选择:3 数据归一化 ...
- 从小白到区块链工程师:第一阶段:Go语言中的函数学习(6)
一. 为什么要有函数 我们在以后的编码过程中,有很多代码会重复出现,这些重复实现的代码,我们不需要每次需要用到的时候都编写,我们将重复的代码封装起来.比如在一个网站中,无论是消费的金额还是积分的积累等 ...
- python中format函数学习笔记
简而言之,format函数就是用{}来代替之前的输出字符时使用的% print('my name is %s and I am %d years old' % ('porsche',23)) 下面详细 ...
随机推荐
- 判断当前设备是移动端或者PC端
<script> function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var ...
- 关于spring的IOC和DI的xml以及注解的简单介绍
xml 一 目的:通过ApplicationContext对象的getBean方法获取所需类的对象. 编写一个service类 public class service { private Strin ...
- JQuery写的一个常见的banner
大致的布局如下: <div class="banner" > <div class="pic"> ...
- 基于Java配置Spring加Hibernate和再加SpringData时的差别
先在类路径application.properties jdbc.driverClassName = org.postgresql.Driver jdbc.url = jdbc:postgresql: ...
- Android Studio: You need to use a Theme.AppCompat theme (or descendant) with this activity.
错误描述为: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with ...
- 快速了解 Robot Operating System(ROS) 机器人操作系统
http://www.ros.org/ 关于ROS About ROS http://www.ros.org/about-ros/ 机器人操作系统(ROS)是用于编写机器人软件的灵活框架.目的在简化 ...
- Web自动化框架LazyUI使用手册(8)--excel数据驱动详解(ExcelDataProvider)
概述 框架提供了excel数据驱动方式运行测试用例的工具,本文将针对数据驱动,进行详细演示. 详见类:lazy.test.ui.browser.ExcelDataProvider 被测对象: http ...
- python 反人类函数式编程模拟while和if控制流
比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'0'开头的字符串,停止捕捉. while 1: line = input() ': print(sum(m ...
- Android必知必会-带列表的地图POI周边搜索
如果移动端访问不佳,请尝试–> Github版 2016-08-22 更新 注意:在 Activity 代码中的onPoiSearched(PoiResult result, int rCode ...
- Android开发 无法导入ViewPagerIndicator或其他开源框架无法导入
这个问题又花费了好长时间,其实就是很简单的问题,因为各种开源框架的库名称都叫liberary,如果上次导入其他开源框架没有更改名称的话,你再导入其他第三库的时候,系统发现重名,就提示无法导入现象. 解 ...