C語言番外篇(5)-------------->作用域與生命周期

作用域與生命周期是非常重要的編程知識。本篇文章使用C語言講述作用域與生命周期。

一、作用域

在程序設計中,變量并非總是有效的,可以使用的區域就是作用域。

1.1局部變量的作用域

在{}中的都是局部變量,只是作用大小不一樣而已。我們可以簡單地分為兩種。為了方便理解,我們打個比方。將變量的作用域比作自行車。自己家的自行車,爺爺家的自行車。自己家的自行車自己可以使用,但是能夠使用的人比較少:

比如這種:自己家的自行車(局部變量作用域范圍小的)

#include <stdio.h>int main()
{int i = 0;for (i = 0; i < 5; i++){int a = 10;printf("a=%d\n",a);}printf("a=%d\n", a);//error!!!!!!!!!!!!!return 0;
}

運行結果以及結果解釋:

爺爺家的自行車(局部變量作用域范圍大的)?(在main函數中的局部變量):

#include <stdio.h>int main()
{int i = 0;int b = 20;for (i = 0; i < 1; i++)//for循環1次{b = 30;printf("b=%d\n", b);}printf("b=%d\n", b);return 0;
}

運行結果以及結果解釋:

這里定義在主函數中,b是一個局部變量,作用域是主函數的{}中。但是在這里我們不能將其認定為全局變量的作用域。?

?1.2局部變量的作用域

局部變量的作用域好比共享自行車,人人都可以使用。

例如:

#include <stdio.h>int c = 100;//定義全局變量int main()
{int i = 0;c = 50;printf("c=%d\n", c);for (i = 0; i < 1; i++)//for循環1次{c = 25;printf("c=%d\n", c);}return 0;
}

運行結果以及結果解釋:

二、生命周期

生命周期指的變量的創建(申請內存)到變量的銷毀(內存的回收)的過程。

2.1局部變量的生命周期

例如:

#include <stdio.h>int main()
{{int a = 10;printf("a=%d\n",a);}printf("a=%d\n", a);//errorreturn 0;
}

運行結果以及結果解釋:

2.2全局變量的生命周期

全局變量的生命周期是整個程序的生命周期,即main函數開始與結束之間。

例如:

#include <stdio.h>int a = 100;
void test(void)
{printf("test->a=%d\n",a);
}int main()
{test();printf("maint->a=%d\n", a);return 0;printf("after-return->a=%d\n", a);
}

運行結果以及結果解釋:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71479.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

若依前后端分離版使用Electron打包前端Vue為Exe文件

1.前言 本文詳細介紹如何使用electron將若依框架前后端分離版的前端Vue頁面打包為Exe文件&#xff0c;并且包括如何實現應用更新。使用若依基礎代碼體現不出打包功能&#xff0c;因此我使用開發的文件管理系統&#xff0c;介紹上述過程&#xff0c;具體可以查看我的文章《若依…

Linux——Docker容器內MySQL密碼忘記了如何查看

目錄 查看正在運行的MySQL的容器ID 方法一&#xff1a;查看MySQL容器的日志里的密碼 方法二&#xff1a;通過環境變量密碼登錄 方法三&#xff1a;修改密碼 查看正在運行的MySQL的容器ID docker ps 方法一&#xff1a;查看MySQL容器的日志里的密碼 docker logs [MySQL的容器…

康謀分享 | 3DGS:革新自動駕駛仿真場景重建的關鍵技術

隨著自動駕駛技術的迅猛發展&#xff0c;構建高保真、動態的仿真場景成為了行業的迫切需求。傳統的三維重建方法在處理復雜場景時常常面臨效率和精度的挑戰。在此背景下&#xff0c;3D高斯點陣渲染&#xff08;3DGS&#xff09;技術應運而生&#xff0c;成為自動駕駛仿真場景重…

大模型架構記錄2

一 應用場景 1.1 prompt 示例 1.2 自己搭建一個UI界面&#xff0c;調用接口 可以選用不同的模型&#xff0c;需要對應的API KEY 二 Agent 使用 2.1 構建GPT

【C++】二叉樹相關算法題

一、根據二叉樹創建字符串 題目描述&#xff1a; 給你二叉樹的根節點 root &#xff0c;請你采用前序遍歷的方式&#xff0c;將二叉樹轉化為一個由括號和整數組成的字符串&#xff0c;返回構造出的字符串。 空節點使用一對空括號對 “()” 表示&#xff0c;轉化后需要省略所有…

【機械視覺】C#+visionPro聯合編程———【一、C# + VisionPro 聯合編程詳解以及如何將visionPro工具加載到winform】

機械視覺與 C# VisionPro 聯合編程詳解 目錄 機械視覺與 C# VisionPro 聯合編程詳解 概念 應用場景 1. 工業檢測與質量控制缺陷檢測 2. 定位與機器人引導 3. 識別與分類 4. 復雜流程控制 將visionPro工具加載到winform 環境準備 一、創建winform項目 二、打開窗體…

修改hosts文件,修改安全屬性,建立自己的DNS

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

對NXP提供的BSP里邊所使用的u-boot的環境變量`bootcmd`的解析

為什么我們要解析環境變量bootcmd&#xff1f; 承接博文 https://blog.csdn.net/wenhao_ir/article/details/145902134 繼續解析u-boot的環境變量bootcmd。 為什么要解析u-boot的這個環境變量bootcmd&#xff1f;因為如果u-boot在倒計時完后,首先執行的是就是下面這條命令&am…

NSSCTF [SWPUCTF 2024 秋季新生賽]金絲雀

5948.[SWPUCTF 2024 秋季新生賽]金絲雀 canary繞過和64位的ret2libc(格式化字符串泄露) (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file xn xn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.…

神經網絡中梯度計算求和公式求導問題

以下是公式一推導出公式二的過程。 表達式一 ? E ? w j k ? 2 ( t k ? o k ) ? sigmoid ( ∑ j w j k ? o j ) ? ( 1 ? sigmoid ( ∑ j w j k ? o j ) ) ? ? ? w j k ( ∑ j w j k ? o j ) \frac{\partial E}{\partial w_{jk}} -2(t_k - o_k) \cdot \text{sigm…

koa-session設置Cookie后獲取不到

在谷歌瀏覽器中請求獲取不到cookie問題之一&#xff08;谷歌安全策略&#xff09; 場景 前端使用 axios 請求&#xff0c;項目地址&#xff1a;http://192.168.8.1:5173 import axios from axiosconst request axios.create({baseURL: http://127.0.0.1:3001/,timeout: 60000,…

單元測試與仿真程序之間的選擇

為什么寫這篇文章 現在的工作需求&#xff0c;讓我有必要總結和整理一下。 凡事都有適用的場景。首先這里我需要提示一下&#xff0c;這里的信息&#xff0c;可能并不普適。 但是可以肯定一點的是&#xff0c;有些人&#xff0c;不論做事還是寫書&#xff0c;上下文還沒有交待…

如何在Android中實現圖片加載和緩存

在Android中實現圖片加載和緩存是提升應用性能和用戶體驗的關鍵環節。高效的圖片加載和緩存策略能夠減少內存占用、避免應用卡頓&#xff0c;并快速響應用戶的圖片查看需求。以下是在Android中實現圖片加載和緩存的幾種常見方法&#xff1a; 一、使用第三方圖片加載庫 1. Gli…

FusionInsight MRS云原生數據湖

FusionInsight MRS云原生數據湖 1、FusionInsight MRS概述2、FusionInsight MRS解決方案3、FusionInsight MRS優勢4、FusionInsight MRS功能 1、FusionInsight MRS概述 1.1、數據湖概述 數據湖是一個集中式存儲庫&#xff0c;允許以任意規模存儲所有結構化和非結構化數據。可以…

推薦幾款優秀的PDF轉電子畫冊的軟件

當然可以&#xff01;以下是幾款優秀的PDF轉電子畫冊的軟件推薦&#xff0c;內容簡潔易懂&#xff0c;這些軟件都具有易用性和互動性&#xff0c;適合不同需求的用戶使用。? ? FLBOOK&#xff5c;在線創作平臺 支持PDF直接導入生成仿真翻頁電子書。提供15主題模板與字體庫&a…

【GoTeams】-2:項目基礎搭建(下)

本文目錄 1. 回顧2. Zap日志3. 配置4. 引入gprc梳理gRPC思路優雅關閉gRPC 1. 回顧 上篇文章我們進行了路由搭建&#xff0c;引入了redis&#xff0c;現在來看看對應的效果。 首先先把前端跑起來&#xff0c;然后點擊注冊獲取驗證碼。 再看看控制臺輸出和redis是否已經有記錄&…

深度學習反向傳播

一、白話解釋 梯度其實就是導數&#xff0c;除了用符號求導也可以用近似求導&#xff1a; 然后更新ww-學習率*導數 反向傳播就是鏈式求導 向前計算&#xff1a;對每個節點求偏導 在前向傳播的時候&#xff0c;進行一次前向計算的時候就可以把每一條線的偏導數都知道 前向傳…

JavaWeb-HttpServletRequest請求域接口

文章目錄 HttpServletRequest請求域接口HttpServletRequest請求域接口簡介關于請求域和應用域的區別 請求域接口中的相關方法獲取前端請求參數(getParameter系列方法)存儲請求域名參數(Attribute系列方法)獲取客戶端的相關地址信息獲取項目的根路徑 關于轉發和重定向的細致剖析…

deepseek在pycharm 中的配置和簡單應用

對于最常用的調試python腳本開發環境pycharm&#xff0c;如何接入deepseek是我們窺探ai代碼編寫的第一步&#xff0c;熟悉起來總沒壞處。 1、官網安裝pycharm社區版&#xff08;免費&#xff09;&#xff0c;如果需要安裝專業版&#xff0c;需要另外找破解碼。 2、安裝Ollama…

AAA協議:從零認識網絡的“身份管家”

AAA&#xff08;Authentication, Authorization, Accounting&#xff0c;認證、授權和計費&#xff09;是網絡世界的“身份管理員”&#xff0c;負責確認“你是誰”、決定“你能干啥”、記錄“你干了啥”。如果你用過華三的交換機或路由器&#xff0c;可能在配置用戶管理時見過…