函数指针、指针数组与数组指针

来源:互联网 发布:我国的教育现状数据 编辑:程序博客网 时间:2024/04/30 02:29
 

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。

数组指针:首先它是一个指针,它指向一个数组,在32位系统下永远占4个字节。 

函数指针:

A. int *p1[10];

    [ ]的优先级高于*,p1先与[ ]结合,构成一个数组的定义,数组名为p1,int * 修饰的是数组的内容,即数组的每个元素。

B. int (*p2)[10];

    ( )的优先级比[ ]高,*和p2构成一个指针的定义,指针变量名位p2,int修饰的是数组的内容,即数组的每个元素。

    数组在这里并没用名字,是个匿名数组。

C. char * (*pf)(char * p1,char * p2); 

      (*pf)表示一个指针,这个指针指向一个函数,这个函数的参数是 (char * p1,char * p2),返回值是: char*

int main(void)
{
 char a[5]={'A','b','c','d'};
 char(*p3)[5]=&a;
// char(*p4)[5]=a;  //error
 for(int i=0;i<4;i++)
  printf("%c ",(*p3)[i]);

 return 0;
}

例2:

char* GetMomery(char *p ,int num)
{
 p=(char *)malloc(num*sizeof(num));
 return p;
}

void main()

{

char *str=NULL;
 //str=GetMomery(str,10);
 char * (*ptr)(char *p,int num); //定义函数指针
 ptr=&GetMomery;      //函数指针指向函数
 str=(*ptr)(str,10);

 strcpy(str,"hello");
 printf("%s",str);
 free(str);

 

}

原创粉丝点击