对指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解

来源:互联网 发布:心理教学软件 编辑:程序博客网 时间:2024/05/22 17:25

指针数组

int a=10,b=20;
int *arr[2]={&a,&b};//指针数组,数组 
printf("%p  %p\n\n",arr[0],&a);// 000000000062FE3C  000000000062FE3C 打印结果为两个一样的地址

数组指针

int (*parr)[2];
parr=&arr; //数组指针,指针 
printf("%p  %p\n\n",&arr,parr+1);// 000000000062FE20  000000000062FE28 parr+1的地址加了8,指向下一个数组

函数指针

void funA(){
printf("I am funA!\n");
}
void funB(){
printf("I am funB!\n");
}
void (*pf)();//函数指针,指针
pf=funA;
pf();
//调用funA()   I am funA!

函数指针数组

void (*pf2[2])()={funA,funB};//函数指针数组, 数组 
pf2[0](); //调用funA()   I am funA!
pf2[1](); //调用funB()  I am funB!

指向函数指针数组的指针

即是指针,保存函数指针数组的地址

源码

#include<stdio.h>void funA(){printf("I am funA!\n");}void funB(){printf("I am funB!\n");}int main(){int a=10,b=20;int *arr[2]={&a,&b};//指针数组,数组 int (*parr)[2];parr=&arr;//数组指针,指针 printf("%p  %p\n\n",arr[0],&a);printf("%p  %p\n\n",&arr,parr+1);void (*pf)();//函数指针,指针pf=funA;pf();void (*pf2[2])()={funA,funB};//函数指针数组, 数组 pf2[0]();pf2[1]();return 0;}






阅读全文
0 0
原创粉丝点击