C语言:高级指针

1.根据优先级,优先级最高的作为主要的名词,优先级低的做修饰

例如:
 

int main()
{
    int a;
    int b[10];
    int* f[10]= {&a,b};//f是指针还是数组?
    return 0;
}

[ ]优先级更高,所以f先是数组,长度为10,每个单元都是int*
所以可简述为f是保存指针的数组,简称指针数组,f主要是数组,指针是它的类型

以此类推,可以组成多种高级指针

int main()
{
    int a;
    int b[10];
    int* f[10]= {&a,b};
    int (*g)[10];//g是指针,指向数组,这个数组长度为10,类型是int
    g = &b;    //g是指向数组的指针,简称数组指针
    int* h();//h是函数,函数无参数,返回值为int*
         //h是返回指针的函数,简称指针函数
    int (*i)();//i是指针,指向一个无参数,返回值为int的函数
           //i是指向函数的指针,简称函数指针
    return 0;
}

如:数组指针,指针函数,函数指针

2.如果数组优先级最高,则考虑长度和类型
   如果是指针优先级最高,则考虑指向的类型
   如果是函数优先级最高,则考虑参数列表和返回值
   函数指针使用的较多

你可能感兴趣的:(c语言,开发语言)