C語言中,函式名代表函式的入口地址嗎求大神!求解析

2021-05-04 18:27:57 字數 1688 閱讀 7436

1樓:後花園中的後花園

「如果在程式中定義了一個函式,在編譯時會把函式的源**轉換為可執行**並分配一段儲存空間。這段記憶體空間有一個起始地址,也稱為函式的入口地址。函式名代表函式的起始地址。

呼叫函式時,從函式名得到函式的起始地址,並執行函式**。」摘自《c程式設計(第五版)》-譚浩強,p265頁。

2樓:

函式是c程式的**塊,當函式被呼叫執行時作業系統為函式分配一個乘坐入口地址的「地址」。函式被呼叫執行時,函式體中的區域性變數、函式的引數從入口地址開始被分配記憶體空間,函式的入口地址是執行函式時的「進入點」。

也就是說函式的名字型現函式的入口地址。

3樓:

對,比如int*p;

(*p)()=max();

即代表指標p指向max()函式首地址

4樓:

要知道main函式也是由其他的程式呼叫的。

我們編寫的程式,最終是不存在所謂的函式名的,有的只有記憶體單元地址0xffeedd00.

我們的程式執行時,程式載入到記憶體,比方說整個程式所佔用的記憶體範圍是0xffee0000 ~ 0xffeedd00,這麼多。

假設程式有一個小函式fun(),那麼它的範圍可能是0xffee0000~0xffee00ff。

那麼函式fun()的入口地址是多少? 0xffee0000。。

那麼函式名fun實際上就是0xffee0000的別稱。

你用一個指標指向這個函式,那麼你把 指標 = 函式名,實際就是把0xffee0000這個記憶體單元的地址給指標p。

所以,結論是:

函式名 是 程式在執行時, 函式所佔記憶體單元塊的 首地址 的別稱。

c語言中,函式名代表函式的入口地址嗎!!!求大神!求解析!

5樓:後花園中的後花園

「如果在程式中定義了一個函式,在編譯時會把函式的源**轉換為可執行**並分配一段儲存空間。這段記憶體空間有一個起始地址,也稱為函式的入口地址函式名代表函式的起始地址

呼叫函式時,從函式名得到函式的起始地址,並執行函式**。摘自《c程式設計(第五版)》-譚浩強,p265頁。

6樓:倒黴熊

再學習函式指標的時候,見過這麼一個例子:

int func(int x); /* 宣告一個函式 */void (*f) (int x); /* 宣告一個函式指標 */f=func; /* 將func函式的首地址賦給指標f */賦值時函式func不帶括號,也不帶引數,由於func代表函式的首地址,因此經過賦值以後,指標f就指向函式func(x)的**的首地址。

所以 函式名代表函式的入口地址吧

7樓:喬見你

樓上,函式指標跟函式的型別要一致,void型編譯會不通過的

[ c語言函式名作為入口地址但是呼叫函式時只需要函式名+形參但定義指向函式的指標時需*(指標變數)

8樓:匿名使用者

c語言中,所有的變數都儲存在記憶體中,可以通過&運算子獲得變數的記憶體地址,函式呼叫回時,只需要把普

答通變數前加上&符號,就可以達到傳遞變數地址的目的。例如:定義一個結構體型別structyearmonthday;定義相關函式

c語言中的main函式引數作用,C語言中的main函式引數作用

在呼叫可執行程式時,可以通過main函式的引數將命令列的呼叫引數傳遞給main函式。事實上,main 函式既可以是無參函式,也可以是有參的函式。對於有參的形式來說,就需要向其傳遞引數。從函式引數的形式上看,包含一個整型和一個指向字元指標的指標。當一個c的源程式經過編譯 連結後,會生成副檔名為.exe...

c語言中,temp是什麼函式,C語言中,temp是什麼函式

在c語言中,temp沒有特別的含義,既不是關鍵字也不是庫函式。可能是程式設計人員自版定義的權一個變數或函式,通常用來表示一個臨時變數,來自 臨時 的英文單詞temporary。舉例如下 int temp 定義一個int型別的變數,變數名為temp double temp 定義一個double型別的變...

C語言編寫函式,如何在C語言中定義一個函式?

這個hanshu 用來從20個隨機數中推匯出15個不重複的隨機數 正數 演算法邏輯有問題。看這一句 a i a i 1 想做什麼?它在內迴圈裡 迭代數是j不是i 當前後兩數相同時它總是把後一個數賦值給前一個數,猜想你大概是想不斷的把後面的數賦給i位置的數然後做相等測試,而這裡的i就沒有動 那個con...