程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> static的用途

static的用途

編輯:關於C語言

1)限制變量的作用域:即在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變;

2)限制變量的存儲域:<a>在模塊內(但在函數體外),一個被聲明為靜態的變量,可以被模塊內的所有函數訪問,但不能被模塊外其它函數訪問,它是一個本地的局部變量;<b>在模塊內 ,一個被聲明為靜態的函數只能被這一個模塊內的其他函數調用,那就是這個函數被限制在聲明它的模塊的本地范圍內使用。

 

補充:一個代碼運行時分為4個區:

1)code區:代碼

2)data:全局,靜態,常量   沒賦初值的值默認為0

3)堆:new,malloc分配的內存,需要delete,free釋放;如果不釋放,則只有等到 程序正常運行結束時,由操作系統回收,理論上無限大。

4)棧:場景信息(函數的參數,返回值,局部變量,臨時變量),VC的棧區默認為4M。{例:int n[1024*1024]時會報錯,因為int占四個字節,1024為1M。所以總共占了4M,則系統資源不夠分為,所以報錯}   對大內存的操作,需要放堆區(沒賦初值時值為無窮大)

如:  棧區的空間自動分配自動釋放。

Stedent stu[4*1024*1024] 會出問題,應改為:student *stu=new stu[4*1024*1024]   釋放:delete[] stu;

內存異常:(1)使用非法空間<*p=&a;p=(int *)7;*p=8   將P指針強行指向7這個對象   並賦值為8>                            (2)系統空間不夠分配

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved