1、指针
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。
最近看到有人问到这样的问题"数组名能否自加问题",最后我经过验证得出了个结论,不可以,假设有一个整形数组int a[4] 如果出现a++表达式,则是一种错误的表达式,但是可以是a+1,所以推出了一个想法就是地址不可以自加,但是可以通过加几来完成,对数组中其他元素的遍历,也就是说必须有个"+"号这样才可以实现对数组名也就是地址的运算,如果没有加号则就是错误的.当给出一个指针时,int p;p=a;p++;这样的运算就是正确的,指针是一种可移动的东西,因此可以进行自加,自加有和p+1是一样的效果,所以由此推出: