本文目錄一覽:
static在c語言中是什麼意思
1、修飾變量
變量分為局部和全局變量,但是都存於內存的靜態區。靜態全局變量的作用域僅局限於變量被定義的文件中,其他文件即使使用extern也沒法使用,其範圍準確的說是從定義之初開始,到文件結尾處結束。在其前面定義的代碼行也不能使用。
靜態局部變量,在函數體裏面定義的,就只能在這個函數里用了,同一個文檔中的其他函數也用不了。由於被static 修飾的變量總是存在內存的靜態區,所以即使這個函數運行結束,這個靜態變量的值還是不會被銷毀,函數下次使用時仍然能用到這個值。
2、修飾函數
函數前加static 使得函數成為靜態函數。但此處「static」的含義不是指存儲方式,而是指對函數的作用域僅局限於本文件(所以又稱內部函數)。使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名。
關鍵字static 有着不尋常的歷史。起初,在C 中引入關鍵字static 是為了表示退出一個塊後仍然存在的局部變量。隨後,static 在C 中有了第二種含義:用來表示不能被其它文件訪問的全局變量和函數。為了避免引入新的關鍵字,所以仍使用static 關鍵字來表示這第二種含義。
關於 C語言 static變量訪問的問題
static限制了此變量在其他文件中的作用,只在本文件裏面使用,如果在函數里定義,則只能在函數裏面使用。在main所在的文件中,main函數調用的是r()指針函數,但是a是r()調用的,也就是r()在a所定義的文件裏面掉用a而已。也就是從頭到尾,也只有r()這個指針函數調用了a,並不是main調用a的。
c語言中static的作用和用法
static關鍵字不僅可以用來修飾變量,還可以用來修飾函數。在使用 static 關鍵字修飾變量時,我們稱此變量為靜態變量。靜態變量的存儲方式與全局變量一樣,都是靜態存儲方式。靜態變量屬於靜態存儲方式,屬於靜態存儲方式的變量卻不一定就是靜態變量。
在C語言中,static關鍵字的作用如下:
在修飾變量的時,static修飾的靜態局部變量只執行一次,而且延長了局部變量的生命周期,直到程序運行結束以後才釋放。
static修飾全局變量的時,這個全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。
static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變量存放在全局數據區的靜態變量區。
C++的static用法:
面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變量和函數,不涉及類;後者主要說明static在類中的作用。
在類中,static可以用來修飾靜態數據成員和靜態成員方法。
靜態數據成員:
靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只佔一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。
靜態數據成員是在程序開始運行時被分配空間,到程序結束之後才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。
靜態數據成員既可以通過對象名引用,也可以通過類名引用。
靜態成員函數:
靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。
非靜態成員函數有this指針,而靜態成員函數沒有this指針。
靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。
原創文章,作者:JNESQ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/313246.html