分别解释如下指针和数组的组合 int a; int *a; int **a; int a[10]; int *a[10]; int (*a)[10]; int *a(int); int (*a[10])(int);
时间: 2024-06-02 17:09:01 浏览: 17
1. int a;:定义了一个名为a的整型变量。
2. int *a;:定义了一个名为a的指针变量,该指针变量可以指向整型变量。
3. int **a;:定义了一个名为a的指向指针的指针变量,该指针变量可以指向一个指针,该指针指向一个整型变量。
4. int a[10];:定义了一个名为a的整型数组,数组长度为10。
5. int *a[10];:定义了一个名为a的指针数组,数组长度为10,每个数组元素都是一个指向整型变量的指针。
6. int (*a)[10];:定义了一个名为a的指向整型数组的指针变量。
7. int *a(int);:定义了一个名为a的函数,该函数接受一个整型参数并返回一个指向整型变量的指针。
8. int (*a[10])(int);:定义了一个名为a的指针数组,数组长度为10,每个数组元素都是一个指向函数的指针,该函数接受一个整型参数并返回一个整型值。
相关问题
指针数组(int *a[])和数组指针 (int (*a)[])
指针数组(int *a[])是一个数组,其元素都是指向int类型的指针,可以将其看作是一个二维数组,第一维是数组元素的个数,第二维是指针指向的数据类型。
数组指针(int (*a)[])是一个指针,指向一个int类型的数组。可以将其看作是一个一维数组,该数组的元素是int类型的数组。
需要注意的是,指针数组和数组指针的声明方式不同,指针数组的声明方式为int *a[],而数组指针的声明方式为int (*a)[]。
声明数组,对比int,int *和数组首地址
int a[10]; //声明一个长度为10的int类型数组a
int *p; //声明一个int类型的指针p
p = a; //将数组a的首地址赋值给指针p
//此时a和p都指向数组a的首地址,但a是一个数组,p是一个指针,所以它们有以下不同:
//1. a的大小为10*sizeof(int),而p的大小为sizeof(int *)
//2. a可以使用下标访问元素,如a[0]、a[1]等,而p需要使用指针运算符*和+来访问元素,如*p、*(p+1)等
//3. a是一个常量指针,不能重新指向其他地址,而p可以重新指向其他地址
注:本答案中的int类型均指32位整型。