int a; int* a; int** a; int (*a)[10]; int (*a)(int)区别?
2015-02-17 21:42
309 查看
转自:http://www.zhihu.com/question/20481976/answer/15249192
![](http://pic4.zhimg.com/1d2e63fe597136395446452742706c6b_b.jpg)
a)
int a;表示一个内存空间,这个空间用来存放一个整数(int);
b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;
c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;
d) int (*a)[10];表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为10、类型为int的数组;和int** a的区别在于,++、+=1之后的结果不一样,其他用法基本相同。
以上四种类型见上图表示。
e) int (*a)(int);表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int。
![](http://pic4.zhimg.com/1d2e63fe597136395446452742706c6b_b.jpg)
a)
int a;表示一个内存空间,这个空间用来存放一个整数(int);
b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;
c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;
d) int (*a)[10];表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为10、类型为int的数组;和int** a的区别在于,++、+=1之后的结果不一样,其他用法基本相同。
以上四种类型见上图表示。
e) int (*a)(int);表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int。
相关文章推荐
- Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- mysql,int(5)、int(10)啥区别联系
- mysql中int(10)和char(10)以及varchar(10)的区别
- Mysql中,int(10)和int(11)的区别
- Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- int (*a)[10] 和 int *a[10] 的区别
- int *a[10]与int (*a)[10]的区别,
- Mysql中,int(10)和int(11)的区别
- ( 转)Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- int *a[10] 和int (*a)[10]的区别
- 关于指针* —— int a; int* a; int** a; int (*a)[10]; int (*a)(int)区别
- int a; int* a; int** a; int (*a)[10]; int (*a)(int)区别
- Mysql中,int(10)和int(11)的区别
- int (*a)[10] 和 int *a[10]d的区别
- Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- int a; int* a; int** a; int (*a)[10]; int (*a)(int);int *(*a)[10]区别?
- Mysql中,int(10)和int(11)的区别
- Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
- Mysql中int(2)和int(10)的区别