国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
簡要說明C語言中指針函數(shù)與函數(shù)指針的區(qū)別

http://www.jb51.net/article/83013.htm

2016

指針函數(shù)一般是指返回指針的函數(shù);

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
  
int* fun(int *a)
{
  return a;
}
  
int main(int argc, char **argv)
{
  int a = 3;
  printf("%d", *(fun(&a)));
  return 0;
}

 
函數(shù)指針是表示指向函數(shù)開始地址的指針:
首先要了解函數(shù)的調(diào)用過程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
  
int fun(int i)
{
  return i + 1;
}
  
int main(int argc, char **argv)
{
  int r;
  //r = fun(5);
  r = (*fun)(5);   //調(diào)用方式
  printf("%d\n", r);
  return 0;
}

函數(shù)可以用r = (*fun)(5);來調(diào)用,說明函數(shù)名其實是一個指針,
通過(*fun)來尋址。所以我們就可以定義一個指針

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
  
int fun(int i)
{
  return i + 1;
}
  
int main(int argc, char **argv)
{
  int r;
  int (*funP)(int);  //聲明指針
  //funP = fun;    //給指針賦值
  funP = &fun;
  r = funP(5);
  printf("%d\n", r);
  return 0;
}

 
所以,給函數(shù)指針賦值也有兩種方式;
同樣,通過函數(shù)指針調(diào)用函數(shù)的方式也有兩種:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
  
int fun(int i)
{
  return i + 1;
}
  
int main(int argc, char **argv)
{
  int r;
  int (*funP)(int);  //聲明指針
  funP = fun;   //給指針賦值
  //r = funP(5);
  r = (*funP)(5);   //調(diào)用
  printf("%d\n", r);
  return 0;
}

也就是說,除了聲明的地方,fun()與(*fun)()的作用是一樣的。
這樣,也就讓C語言容易實現(xiàn)類似于回調(diào)函數(shù)的結(jié)構(gòu):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
  
int funA(int i)
{
  return i + 1;
}
  
int funB(int i)
{
  return i - 1;
}
  
void fun(int (*funP)(int), int i)
{
  printf("%d\n", funP(i));
}
  
int main(int argc, char **argv)
{
  int (*funP)(int);  //聲明指針
  funP = funA;    //給指針賦值
  //funP = funB;   //給指針賦值
  
  fun(funP, 5);    //調(diào)用
  return 0;
}

 在fun()函數(shù)里,它做的只是在某個時候調(diào)用一個funP指針指向的函數(shù),至于是哪個函數(shù),在fun函數(shù)的定義處還無從得知;直到將funA賦給函數(shù)指針funP,funP具體要做什么功能,才得以確定。
也就是說,main函數(shù)決定fun函數(shù)需要幫它實現(xiàn)什么函數(shù)代碼,但是fun何時調(diào)用以及是否調(diào)用main給他的函數(shù),那是由fun()來決定。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C指針函數(shù)與函數(shù)指針
進化論——從函數(shù)指針到被結(jié)構(gòu)封裝的函數(shù)指針及參數(shù)的應(yīng)用舉例
《徹底搞定C指針》第7篇 函數(shù)名與函數(shù)指針
C語言的那些小秘密之指針(四)
C開發(fā)實戰(zhàn)
C++中的虛函數(shù)(一)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服