C++中的数组指针和指针数组

using namespace std;
int main(){
    
    //a) 一个整型数( An integer)
    int a;
    //b) 一个指向整型数的指针( A pointer to an integer)
    int *b;
    //c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer)
    int **c;
    //d) 一个有 10 个整型数的数组( An array of 10 integers)
    int d[10];
    //e) 一个有 10 个指针的数组,该指针是指向一个整型数的( An array of 10 pointers to integers)
    int *e[10]
    //f) 一个指向有 10 个整型数数组的指针( A pointer to an array of 10 integers)
    int (*f)[10];
    //g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数( A pointer to a functionthat takes an integer as an argument and returns an integer)
    int *g(int);
    //h) 一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer 
    int (*h[10])(int);
    return 0;
}

关键点在于:
1、[]优先级高于*
2、根据优先级判定是一个数组还是一个指针。

例如:int * e[10], 由于[]优先级高于*, 因此e[10]为一个整体,类比于int * a ,也就是一个指针,只不过指向的是一个数组。因此,它是一个指针,指向数组的指针,也就是数组指针。数组中的每一个元素都是一个指针,指向的是int变量。

int (*f)[10], 根据优先级,首先编译器认定它是一个数组,数组中的每个变量都是int类型,指针f指向该数组。也就是一个指针数组。

猜你喜欢

转载自blog.csdn.net/geerniya/article/details/84672694
今日推荐