欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++變量存儲(chǔ)的生命周期與作用域?qū)嵗a精講

 更新時(shí)間:2022年10月26日 16:39:31   作者:劃水貓  
這篇文章主要介紹了C++變量存儲(chǔ)的生命周期與作用域,從創(chuàng)建到消亡的完整過(guò)程,例如人從出生到死亡的整個(gè)過(guò)程就是一個(gè)生命周期。本文將通過(guò)示例為大家詳細(xì)講講,感興趣的可以學(xué)習(xí)一下

auto類(lèi)型:非靜態(tài)的局部變量存儲(chǔ)類(lèi)型都是auto,這些數(shù)據(jù)存儲(chǔ)在棧區(qū),不初始化變量的值時(shí)隨機(jī)的。C++中的auto還可以自動(dòng)推導(dǎo)類(lèi)型。生命周期:塊內(nèi) 作用域:塊內(nèi)

程序:

#include <stdio.h>
void test(void);
int main() {
// auto存儲(chǔ)類(lèi)型
    auto b = 13;  // C++新功能,auto自動(dòng)推導(dǎo)類(lèi)型
	int a = 12;  // auto存儲(chǔ)類(lèi)型的局部變量,存儲(chǔ)在函數(shù)棧幀中
	{
		int c = 11;
		printf("%d\n",a);
		printf("%d\n",c);
	}
	test();
	printf("%d\n",a);
    return 0;
}
void test(void) {
	int d = 13;  // auto存儲(chǔ)類(lèi)型的局部變量,存儲(chǔ)在函數(shù)棧幀中
	printf("%d\n",d);
}

static類(lèi)型:static靜態(tài)存儲(chǔ)類(lèi)型的變量,可以作為局部變量和全局變量。作為全局變量的時(shí)候不能被外部文件所訪問(wèn),靜態(tài)變量只初始化一次,存儲(chǔ)在靜態(tài)區(qū)中。也可以用來(lái)修飾函數(shù),這樣外部文件無(wú)法調(diào)用該函數(shù)。生命周期:整個(gè)程序 作用域:全局靜態(tài)文件內(nèi)、局部塊內(nèi)

程序:局部靜態(tài)變量

#include <stdio.h>
#include <windows.h>
void test(void);
int main() {
	test();
	test();
	// printf("%d", a);  static作為局部變量,外面是訪問(wèn)不了的
	system("pause");
	return 0;
}
// 局部靜態(tài)變量,存儲(chǔ)在靜態(tài)區(qū)中
void test(void) {
	static int a = 11;  // 只會(huì)被初始化一次
	a++;
	printf("%d\n", a);
}

程序:全局靜態(tài)變量

#include <stdio.h>
#include <windows.h>
void test(void);
static int b = 33;  // 全局靜態(tài)變量,外部文件無(wú)法訪問(wèn),存儲(chǔ)在靜態(tài)區(qū)中
int main() {
	test();
	printf("%d\n", b);
	system("pause");
	return 0;
}
void test(void) {
	printf("%d\n", b);
}

register類(lèi)型:寄存器變量,存儲(chǔ)在cpu中不在內(nèi)存中,所以沒(méi)有地址??梢约涌煊?jì)算機(jī)訪問(wèn)。但是在C++中如果一定要去訪問(wèn)寄存器變量那么寄存器變量會(huì)被降級(jí)成普通變量。寄存器變量不能作為全局變量

程序:

#include <stdio.h>
// register int b = 12;  寄存器變量沒(méi)法作為全局變量
int main() {
// register變量沒(méi)有地址
	register int a = 12;
	printf("%d",a);
	printf("%p", &a);  // 強(qiáng)制訪問(wèn)register變量,那么這個(gè)變量會(huì)變?yōu)閍uto類(lèi)型
    for(register int i=0; i<1000; i++){  // 加快運(yùn)行速度寫(xiě)法,但是沒(méi)必要
    }
	return 0;
}

extern類(lèi)型:可以訪問(wèn)外部文件中的全局變量,只要在本文件中的變量前加上extern表示他是個(gè)外部變量。

程序:

extern.h

#ifndef _EXTER_H_
#define _EXTER_H_
#include <stdio.h>
void test1();
#endif

extern_test.cpp

#include "exter.h"
int c = 44;
int d = 55;  // 這里不要寫(xiě)extern int d;這是錯(cuò)誤的  ,也不要寫(xiě)成extern int d=55這個(gè)是對(duì)的但是不推薦
void test1() {
	printf("extern_test_c_addr:%p\n", &c);
	printf("extern_test_d_addr:%p\n", &d);
}

man.cpp

#include <stdio.h>
#include <windows.h>
#include "exter.h"
void test(void);
extern int d;  //  extern拿到其他文件變量并作為本文件的全局變量
int main() {
// extern拿到其他文件變量并作為本文件的局部變量
	extern int c;
	printf("c=%d\n",c);
	c = 12;
	printf("c=%d\n",c);
	printf("d=%d\n",c);
	test();
	test1();
	printf("extern_test_c_addr:%p\n", &c);
	printf("main_d_addr:%p\n", &d);
	system("pause");
	return 0;
}
void test(void) {
	printf("test d=%d\n",d);
	//printf("c=%d\n", c);  局部變量訪問(wèn)不了
}

到此這篇關(guān)于C++變量存儲(chǔ)的生命周期與作用域?qū)嵗a精講的文章就介紹到這了,更多相關(guān)C++生命周期與作用域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題實(shí)例

    C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題的方法,是一個(gè)比較經(jīng)典的算法設(shè)計(jì)問(wèn)題,對(duì)于學(xué)習(xí)算法設(shè)計(jì)有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言圖文并茂詳解鏈接過(guò)程

    C語(yǔ)言圖文并茂詳解鏈接過(guò)程

    首先來(lái)思考一個(gè)問(wèn)題:工程中的每個(gè)C語(yǔ)言源文件被編譯后生成的目標(biāo)文件,這些目標(biāo)文件如何生成最終的可執(zhí)行程序? 這就需要這節(jié)我們將要分析的鏈接器
    2022-04-04
  • vscode 配置 C/C++編譯環(huán)境(完整教程)

    vscode 配置 C/C++編譯環(huán)境(完整教程)

    這篇文章主要介紹了vscode 配置 C/C++編譯環(huán)境(完整教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C++ 多線(xiàn)程編程建議之 C++ 對(duì)多線(xiàn)程/并發(fā)的支持(下)

    C++ 多線(xiàn)程編程建議之 C++ 對(duì)多線(xiàn)程/并發(fā)的支持(下)

    這篇文章主要介紹的是 C++ 多線(xiàn)程編程建議之 C++ 對(duì)多線(xiàn)程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對(duì)多線(xiàn)程/并發(fā)的支持,接下來(lái)我們看看回發(fā)生什么吧
    2021-10-10
  • C語(yǔ)言修煉之路靈根孕育源流出?初識(shí)C言大道生上篇

    C語(yǔ)言修煉之路靈根孕育源流出?初識(shí)C言大道生上篇

    C語(yǔ)言是一門(mén)面向過(guò)程、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語(yǔ)言是僅產(chǎn)生少量的機(jī)器語(yǔ)言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語(yǔ)言
    2022-03-03
  • 基于C++中sprintf的錯(cuò)誤總結(jié)詳解

    基于C++中sprintf的錯(cuò)誤總結(jié)詳解

    本篇文章是對(duì)C++中sprintf的錯(cuò)誤進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言實(shí)現(xiàn)井字棋游戲

    C語(yǔ)言實(shí)現(xiàn)井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C語(yǔ)言實(shí)現(xiàn)逆波蘭式實(shí)例

    C語(yǔ)言實(shí)現(xiàn)逆波蘭式實(shí)例

    這篇文章介紹了C語(yǔ)言實(shí)現(xiàn)逆波蘭式實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深入學(xué)習(xí)C語(yǔ)言中的函數(shù)指針和左右法則

    深入學(xué)習(xí)C語(yǔ)言中的函數(shù)指針和左右法則

    這篇文章主要介紹了深入學(xué)習(xí)C語(yǔ)言中的函數(shù)指針和左右法則,左右法則是一種常用的C指針聲明,需要的朋友可以參考下
    2015-08-08

最新評(píng)論