1、int a; 表示一个内存空间,这个空间用来存放一个整数(int);
2、int* a; 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间;
3、int** a; 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。
4、int (*a)[10]; 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为10、类型为int的数组;
一个例子: 其中 int (*R)[3] = &a; 改为 int (*R)[3] = a; 其结果一致;
#include <stdio.h> int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int (*R)[3] = &a; printf("(*R)[1]= %d\n\n", (*R)[1]); printf("*R[2]= %d\n\n", *R[2]); printf("*(R[2])= %d\n\n", *(R[2])); printf("R[2][2]= %d\n", R[2][2]); return 0; }
输出:
(*R)[1]= 2 *R[2]= 7 *(R[2])= 7 R[2][2]= 9
5、 int *a[10]; 定义了一个指针数组,即10个int * 类型的指针
6、 int (*a)(int); 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int
7、 int (*a[10])() ; a是一个包含10个元素的数组,这个10个元素的类型是:指向不接受参数,返回int型的函数的指针。