C語言進階——全局變量

?

全局變量

·定義在函數外面的變量是全局變量

·全局變量具有全局的生存期和作用域

  ·它們與任何函數都無關

  ·在任何函數內部都可以使用它們

?

全局變量初始化

·沒有做初始化的全局變量會得到0值

  ·指針會得到NULL值

·只能用編譯時刻已知的值來初始化全局變量

·它們的初始化發生在main函數之前

?

被隱藏的全局變量

·如果函數內部存在與全局變量同名的變量,則全局變量被隱藏

?

靜態本地變量-1

·在本地變量定義是加上static修飾符就成為靜態本地變量

·當函數離開的時候,靜態本地變量會繼續存在并保持其值

·靜態本地變量的初始化只會在第一次進入這個函數做,以后進入函數時會保持上次離開時的值

?

靜態本地變量-2

·靜態本地變量實際上是特殊的全局變量

·它們位于相同的內存區域

·靜態本地變量具有全局的生存期,函數內的局部作用域

?

*返回指針的函數

·返回本地變量的地址是危險的(每次離開后,本地變量分配的內存被釋放,下次重新進入某函數時,又重新分配內存給本地變量)

·返回全局變量或靜態本地變量的地址是安全的

·返回在函數內malloc的內存是安全的,但是容易造成問題

·以上的方法都不建議,最好的做法就是返回傳入的指針

?

tips

·不要使用全局變量來在函數間傳遞參數和結果

·盡量避免使用全局變量

  ·豐田汽車的案子

· *使用全局變量和靜態本地變量的函數是線程不安全的

?

?

轉載于:https://www.cnblogs.com/tqing/p/10821477.html

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

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

相關文章

為什么我不用ViewPager或RecyclerView來做上下滑切換

上下滑切換翻頁大概是這樣的效果: 目前網上有諸多如 “仿抖音上下滑...” “仿花椒映客直播...” 之類的技術分享,都有講述實現上下滑切換頁面的方案,其中以 ViewPager 和 RecyclerView SnapHelper 兩種方案為多,但是都有明顯的缺…

web項目上之深入理解Java國際化

作者:https://blog.csdn.net/yangbo787827967/article/details/81124439 假設我們正在開發一個支持多國語言的Web應用程序,要求系統能夠根據客戶端的系統的語言類型返回對應的界面:英文的操作系統返回英文界面,而中文的操作系統則…

Chrome運行時性能瓶頸分析

一,初探,根據現象發現問題 chrome的performance知道很久了,但總是沒有特別權威且跟上時代的學習資料,這次痛定思痛,直接看英文文檔,一點點把這塊啃掉,本筆記基于Chrome 59 step 1: 隱身模式打開…

vue-router之路由鉤子(八)

路由鉤子,即導航鉤子,其實就是路由攔截器,vue-router一共有三類:全局鉤子:最常用路由單獨鉤子組件內鉤子1、全局鉤子在src/router/index.js中使用,代碼如下:// 定義路由配置const router new V…

java第一 ++--

大的轉換小的自動轉換 byte -> short -> int -> long -> float -> double l 自動類型轉換 表示范圍小的數據類型轉換成范圍大的數據類型,這種方式稱為自動類型轉換 自動類型轉換格式: 范圍大的數據類型 變量 范圍小的數據類型值&#xf…

在加拿大讀大學被開除了,以后該怎么辦?

在加拿大讀大學被開除了,以后該怎么辦? 一天晚上正準備睡覺的時候,手機振動,打開一看,是一條微消息,“在加拿大讀大學被開除了,以后該怎么辦?”又一個留學生遇到的棘手問題。在國內上…

GO編程程序員修煉秘籍:十本經典書單

隨著BAT、今日頭條、京東、抖音等大型互聯網公司對Go語言的大范圍應用,帶動更多互聯網企業采取技術跟隨戰略,Go語言發展前景一片大好。5月20日工業和信息化部信息中心發布《2018中國區塊鏈產業白皮書》,Go語言與區塊鏈成為“數字中國”建設的…

AngularJs 冷兵器雜談

一、指令 scope.template中的dom屬性值可以直接用{{attr}}表達式取到scope中的屬性attrlink中attr.$observe可以監聽scope屬性attr的動態變化需要改變$scope上的屬性值時:$scope.$apply(function(){$scope.attr newValue }) 復制代碼二、服務 循環依賴(…

02-print的用法

print的常用: print(hello world!)print(hello,world!) # 逗號自動添加默認的分隔符:空格。print(hello world!) # 加號表示字符拼接。print(hello,world,sep***) # 單詞間用***分隔。print(# * 20) # *號表示重復20遍。print(are you sure?, end)…

單田芳白眉大俠全320回下載

1、搜索“十方評書網”。 2、要下載那個評書家的選擇那個評書家。 3、然后選擇自己要下載的下載可以了。 轉載于:https://blog.51cto.com/14204019/2392323

pip模塊 redis、xlrd、xlutils、nnlog、requests

# import模塊的實質:把python文件執行一遍,# 導入模塊的順序,1、從當前模塊找,如果當前模塊沒有,2、就去python環境變量里面找 pip install redispip install xlrd pip install xlutilspip install nnlogpip install requests pip…

react.js基礎

現在最熱門的前端框架有AngularJS、React、Bootstrap等。自從接觸了ReactJS,ReactJs的虛擬DOM(Virtual DOM)和組件化的開發深深的吸引了我,下面來跟我一起領略ReactJs的風采吧~~ 文章有點長,耐心讀完,你會有…

第 11 章 日志管理 - 089 - 初探 ELK

在開源的日志管理方案中,最出名的莫過于 ELK 了。 ELK 是三個軟件的合稱:Elasticsearch、Logstash、Kibana。 Elasticsearch 一個近乎實時查詢的全文搜索引擎。Elasticsearch 的設計目標就是要能夠處理和搜索巨量的日志數據。 Logstash 讀取原始日志&…

【轉】Kotlin 新版來了,支持跨平臺!

作者:Tamic 原文鏈接:juejin.im/post/5cd8f9… 谷歌在今年的 I/O 大會上宣布,Kotlin 編程語言現在是 Android 應用程序開發人員的首選語言(谷歌宣布 Kotlin 成為安卓開發首選)。 還有一個好消息, Kotlin 1.3.30 正式發布,做了對ap…

WebSocket輕松單臺服務器5w并發jmeter實測

測試結論 nginx最多只能維持(65535*后端服務器IP個數)條websocket的長連接,如果后端websocket服務器IP只有一個,那么就只能最多支持65535條連接。瓶頸就產生在了nginx上建議采用LVS的DR模式來做負載均衡,這樣最大長連接數目就只和websocket服…

人工智能的歷史

AI(Artificial Intelligence)即人工智能,最初是在1956 年被提出,人工智能研究如何用計算機去模擬、延伸和擴展人的智能;如何把計算機用得更聰明;如何設計和建造具有高智能水平的計算機應用系統;如何設計和制造更聰明的…

nginx配置 vue打包后的項目 解決刷新頁面404問題|nginx配置多端訪問

訪問vue頁面時,/# 使url看著不美觀,使用 H5 history模式可以完美解決這個問題,但需要后端nginx幫助。接下來我們自己配置一下。 使用前端路由,但切換新路由時,想要滾動到頁面頂部,或者保持原先的滾動位置&a…

算法導論2nd 10.1-7

為什么80%的碼農都做不了架構師?>>> 思路:兩個隊列q1和q2,兩個隊列指針pusher和poper分別指向q1和q2,push時調用pusher->enqueue,然后將poper里的元素全部dequeue并enqueue到pusher,最后交換…

阿里云Windows2012 R2服務器IPV6配置記錄

要上蘋果APP,則必須要支持IPV6和HTTPS,阿里云本身沒有開放IPV6地址。因此需要進行IPV6的相關配置。查了很多IPV6的配置資料,最終選擇用HE進行IPV6設置。在這過程中遇到一些問題,以記錄下來以備注。 1、IPV6 Tunnel Broker設置 在H…

mycat 1.6.5 for mysql 8分表攻略

2019獨角獸企業重金招聘Python工程師標準>>> 簡述 mycat 對于 mysql 的支持有版本要求,目前 1.6.5 不支持 mysql 8.0 版本。因為mysql 8.0 的加密方式發生了變化。 mycat 1.6.5 連接 mysql 8.0 的兩個方式 mysql 8.0 采用兼容方式,&#xff0…