[C++学习历程]基础部分 C++中的函数学习
生活随笔
收集整理的這篇文章主要介紹了
[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.
轉載于:https://www.cnblogs.com/muyuge/p/6152529.html
總結
以上是生活随笔為你收集整理的[C++学习历程]基础部分 C++中的函数学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读《启示录》有感-----1
- 下一篇: 【More Effective C++】