指针数组和数组指针和函数指针
生活随笔
收集整理的這篇文章主要介紹了
指针数组和数组指针和函数指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 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ù)再補充
總結
以上是生活随笔為你收集整理的指针数组和数组指针和函数指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原神逐月符作用是什么
- 下一篇: C语言模拟实现标准库函数之qsort()