[問題] 函式指標
有兩個問題請教各位
第一個問題:
若宣告一個函式指標變數且將一個函數賦值給它,
那此函式指標變數指向何處? 像是指向一個記憶體位址嗎?
而記憶體儲存的是函數?
ex:
duoble ex1(double x);
int main(){
double (*pf)(double);
pf = ex1;
}
ex1 是函式名稱, 亦代表一個函式的位址, 所以可以寫 pf = ex1;
那函式 ex1 本身是儲在何處? 是像一般變數一樣存在記憶體中嗎?
第二個問題:
以下例子中有兩個函式 f1 與 f2, 其第一個形式引數皆是同型的函式指標,
且回傳第一個引數所計算出來的數值。請問以下例子中 return 的寫法
有無差異? (雖然傳回的數值都是一樣的)
#include<stdio.h>
double f1(double (*pfun)(double), double x);
double f2(double (*pfun)(double), double x);
double sqr(double x);
int main(){
printf("f1(sqr,2.0) = %lf\n",f1(sqr,2.0));
printf("f2(sqr,2.0) = %lf\n",f2(sqr,2.0));
}
double f1(double (*pfun)(double), double x){
return pfun(x);
}
double f2(double (*pfun)(double), double x){
return (*pfun)(x);
}
double sqr(double x){
return x*x;
}
請多多指教.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.176.174.156
※ 編輯: Nairoda 來自: 180.176.174.156 (07/29 23:41)
→
07/29 23:57, , 1F
07/29 23:57, 1F
推
07/29 23:59, , 2F
07/29 23:59, 2F
→
07/30 00:00, , 3F
07/30 00:00, 3F
→
07/30 00:01, , 4F
07/30 00:01, 4F
→
07/30 00:02, , 5F
07/30 00:02, 5F
→
07/30 00:03, , 6F
07/30 00:03, 6F
→
07/30 00:16, , 7F
07/30 00:16, 7F
→
07/30 01:21, , 8F
07/30 01:21, 8F
→
07/30 01:22, , 9F
07/30 01:22, 9F
→
07/30 01:29, , 10F
07/30 01:29, 10F
→
07/30 01:32, , 11F
07/30 01:32, 11F
推
07/30 16:03, , 12F
07/30 16:03, 12F
討論串 (同標題文章)