从内到外的原则。
优先级如下:() > [] > *
1 声明中被括号括起来的那部分;
2.后缀操作符:
括号()表示这是一个函数,而
放括号[]表示这是一个数组;
3.前缀操作符:星号*表示这是一个“指向...的指针”。
demo1:“const char *p”、"char const *p"和"char * const p"的区别?
1.const char *p:由*知道p为指针,再外层由char知道p为指向char的指针,最后一层const知道指针p所指向的char型的变量为只读的 (不能改变它所指向的字符的值)。
2.char const *p:由*知道p为指针,再外层const知道p所指向的变量为只读的,最后一层char知道指针p所指向的变量类型为char(该 情况和1是等价的)。
3.char * const p:由const知道p为只读的,在外层*知道变量p为指针变量,最后一层char知道只读的指针所指向的内容是char型的(不 能修改指针)。
demo2:定义一个包含N个指向返回指向字符的指针的函数的指针的数组。
1.需要一个包含N个指针的数组变量,为*a[N];
2.这些指针指向函数,为(*a[N])();
3.这些指针指向的函数的返回值是指向字符的,为 char *(*a[N])();
通俗地讲,这是一个函数指针数组:
下面是它的使用方法:
#include<stdio.h>
char* fun1();
char* fun2();
char* fun3();
int main()
{
char *(*c[3])();
char* (*point)();
c[0]=fun1;
c[1]=fun2;
c[2]=fun3;
(c[0])();
(c[1])();
(c[2])();
system("pause");
return 0;
}
char* fun1()
{
printf("岱宗夫如何\n");
return NULL;
}
char* fun2()
{
printf("齐鲁青未了\n");
return NULL;
}
char* fun3()
{
printf("造化钟神秀\n");
return NULL;
}运行结果:
本文详细解析了C语言中的指针与数组概念,通过实际示例解释了不同类型的指针声明及其含义,并演示了一个包含函数指针的数组的具体用法。
7万+

被折叠的 条评论
为什么被折叠?



