日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

指针数组和数组指针和函数指针

發(fā)布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指针数组和数组指针和函数指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1.指針數組和數組指針
    • 1.int *p1[10];
    • 2.int (*p2)[10];
  • 2.函數指針
    • char *(*fun1)(char * p1,char *p2)
    • 函數指針的概念
    • 函數指針的作用:
      • 例子1 .調用方式
      • 例子2:(帶注釋)
      • 例子3
  • 3.做題的小技巧

1.指針數組和數組指針

1.int *p1[10];

int *p1[10];

指針數組:存儲指針的數組(數組的元素都是指針,數組所占字節(jié)
     由數組本身決定)

2.int (*p2)[10];

int (*p2)[10];

詳解

int (*) [10]`(指針類型) p2` (指針變量)

數組指針:指向數組的指針(32位系統(tǒng)下永遠是4個字節(jié),他指向
     的數組占字節(jié)數未知)
注:()>[]>*
運算優(yōu)先級速查鏈接
https://blog.csdn.net/csdn_kou/article/details/80139099

2.函數指針

char *(*fun1)(char * p1,char *p2)

函數指針的概念

char *(*fun1)(char * p1,char *p2)

詳解

char *(*)(char * p1,char *p2)(指針類型) fun1(指針變量)

函數指針的作用:

例子1 .調用方式

char * fun(char *p1, char *p2) {} int main() {char *(*p)(char * p1, char *p2);p = &fun;(*p)("aa", "nn");system("pause");return 0; }

上面的例子我們還無法看出他的優(yōu)勢。
函數指針數組

例子2:(帶注釋)

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h>/*四種算法*/ int Add(int x, int y) {return x + y; } int Sub(int x, int y) {return x - y; } int Mul(int x, int y) {return x * y; } int Div(int x, int y) {return x / y; }void calc(int(*p)(int, int)) {//calc(int Add(int ,int )int ret = 0;int x = 0;int y = 0;printf("請輸入兩個操作數:>");scanf("%d%d", &x, &y);ret = p(x, y);// Add(x,y);printf("ret = %d\n", ret); }int main() {int (*p[5])(int, int) = {0, Add, Sub, Mul, Div};//指針變量p[5],內部5個元素,加減乘除int input = 0;do{scanf("%d", &input);if(input>=1 && input<=4)calc(p[input]);//calc(Add);//Add 指針類型是 int (*)(int ,int )elseprintf("退出\n");} while (input); }

例子3

#include <stdio.h>#define GET_MAX 0 #define GET_MIN 1int get_max(int i, int j) {return i > j ? i : j; }int get_min(int i, int j) {return i > j ? j : i; }int compare(int i, int j, int flag)//1 {int ret;//這里定義了一個函數指針,就可以根據傳入的flag,靈活地決定其是指向求大數或求小數的函數//便于方便靈活地調用各類函數int(*p)(int, int);//2if (flag == GET_MAX)//3p = get_max;elsep = get_min;ret = p(i, j);//4return ret; }int main() {int i = 5, j = 10, ret;ret = compare(i, j, GET_MAX);printf("The MAX is %d\n", ret);ret = compare(i, j, GET_MIN);printf("The MIN is %d\n", ret);return 0; }

3.做題的小技巧

  • 畫圖
  • 數組在內存中是連續(xù)存放,不是矩陣形式
  • 在32位系統(tǒng)下,不管什么類型的指針,永遠只占四個字節(jié)
  • 二維數組的內存分布a[i][j] = * (*(a+i)+j)
  • 函數本身沒有類型,函數的返回值才有類型。
    后續(xù)再補充

總結

以上是生活随笔為你收集整理的指针数组和数组指针和函数指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。