首先先来介绍下 int *p[10]和int(*p)[10]区别:
1.前者其实一个有十个指针的数组,该指针指向整型数据。其实也可以这样写(int *)p[10]。
2.后者则是一个指向有十个整型数据数组的指针,说白了*p是一个指针,指向一个数组的。(一维二维都可以)。
下来来举例说明下:
1.int *p[10]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p[10];
int b=10,c=20;
p[1]=&b;
p[2]=&c;
printf("%d %d",*p[1],*p[2]);
return 0;
}
输出结果:
2.int (*p)[10]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4];
int i,j;
p=&b;
for( i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d ",*(*(p+i)+j));
printf("\n");
}
return 0;
}
输出结果:
接下来说下 int *p(int)和 int (*p)(int)区别:
前者其实说白了就是就一个函数(不是函数指针),该函数有一个整型参数,不过返回值为一个指向整型的指针。而后者为一个函数指针,该函数有一个整型的参数,返回值为整型类型。
下来来举例说明
1. int *p(int)
#include <stdio.h>
#include <stdlib.h>
int *p(int a)
{
int *b;
b=&a;
return *b;
}
int main()
{
printf("%d",p(3));
return 0;
}
输出结果:
2.int (*p)(int)
#include <stdio.h>
#include <stdlib.h>
int c(int a,int b)
{
int d;
d=a+b;
return d;
}
int main()
{
int (*p)(int,int);
p=c;
printf("%d",p(2,3));
return 0;
}
输出结果: