复杂类型:由已知的拼凑出的类型;int *p[10];printf("%ld,%ld",sizeof(p),sizeof(int *p[10])); //80 , 80int *p[10];...
复杂类型:由已知的拼凑出的类型;
int *p[10];
printf("%ld,%ld",sizeof(p),sizeof(int *p[10])); //80 , 80
int *p[10]; //*和[]平级,又结合,从优先级上看,p离[]最近,所以说这是一个数组;它有10个元素,每个元素是指向整型变量的指针;
int a,b,c;
p[0]=&a;
p[1]=&b;
.......
*p[0]=-1;p[0]就是指向a的指针,取*之后,就是a的值;
int (*p)[10]
printf("%ld,%ld\n",sizeof(p),sizeof(int (*)[10])); //8 ,8
这是一个指针;指针都是8字节;它指向10个整型元素的数组;
int **p;二级指针;
这是一个指针,它指向另一种指针,该指针指向整型;二级指针可以改变指针的指向;
int *p(int);
这是一个函数,它的参数是一个整型,返回值是一个指向整型的指针;
int (*p)(int);
这是一个指针,它指向参数是int返回值是int的函数;这种指针称之为:函数指针;
int((*p[10])(int))(int);
这是一个数组,10个元素;每个元素是某种指针,这种指针指向函数,该函数参数,参数一个int,返回值是另一种指针,该指针指向参数int 返回值int的函数;
这样一个数组(应该有80个字节;)因为它有10个元素;每个元素是指针;
学员评论
fly123582014-07-01
你感兴趣的课程