定義一個變量,系統的確會分配一個內存單元A來存儲這個變量。而A的固定地址已經是物理地址了。不需要在分配一個來存儲該地址。

創新互聯建站是一家集網站建設,象山企業網站建設,象山品牌網站建設,網站定制,象山網站建設報價,網絡營銷,網絡優化,象山網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
該變量已經實際存在在內存物理地址上了。
你說的for,我看出來你已經知道存在那些功能,但是還不知道某個功能是不是被實現了,下面又是一個例子:
FUN funs[16]={fun1,NULL,fun3};//假設我們知道最多也就16個功能,但是目前只有功能0和2被實現,功能1和其他的3~15都還沒有實現
for(...)
{
int funCode;
...
if(funs[funCode]!=NULL)//如果不是NULL,說明對應的功能號被實現了
funs[funCode](...)//調用
}
---------------------------------------------------------
樓主,C語言是不應該干這件事的!
樓主你的需求實際上可以這樣描述:
1 怎樣才能根據輸入條件來調用不同的函數
2 條件和函數是一一對應的,但是函數在哪是不確定的,例如可能是其他函數傳進來的。
我舉個簡單例子來解決你的問題
typedef void (*FUN)(...);//參數列表和返回值自己填
//定義一些功能函數
void fun1(...)
{
printf("1\n");
}
void fun2(...)
{
printf("1\n");
}
....
//上面的注意了,參數列表和返回值要一樣的
FUN funs[]={fun1,fun2,...};//把函數的指針放進數組,就像你C51的向量區,存放了許多函數的地址,這里最終放的也是地址,只不過等程序編譯好了才知道是多少,
...//一堆代碼
int funCode;//用來存放計算出來的功能代碼,例如0表示fun1,1表示fun2
...//一堆超級復雜而且重要且不可逃避的代碼之后,funCode被設為了某個值,這個這個值實際上是我精心而且故意設計為理解簡單的小玩意,代表某個功能的代碼。
funs[funCode](...)//調用功能函數(知道funCode需要精心設計了吧,funCode為0就調用了fun1),當然你也可以把funs傳到某個函數,然他也像這樣使用傳進去的函數。
變量是存放在內存中的,只要是存放在內存中的二進制數就會有一個內存的地址,所有變量是有地址的!
那函數是什么呢?函數是由一些運行的語句組成的,程序運行的時候就會把函數中的語句調用到內存中去,那么函數代碼在內存中開始的那個內存空間的地址就是函數的地址!
至于函數中用的變量的地址并不是放在代碼區的,一般都放在另外的兩個地方,其實地址上是有很大的差值的
希望你能理解上面的內容,祝愿你學習C語言能馬到成功!
網頁標題:c語言固定函數地址 C語言函數地址
文章網址:http://www.yijiale78.com/article24/hhijce.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、商城網站、品牌網站建設、搜索引擎優化、域名注冊、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯