C语言指针回顾(一)理解指针和指针指向的内容

xiaoxiao2021-02-28  9

       指针是C语言的灵魂,但 C++是不喜欢使用指针的,它喜欢使用引用。其实类似的还有,C++不喜欢使用字符数组,而喜欢用字符串。但是呢,这不意味着就不用掌握指针了,掌握指针的精髓还是非常非常有必要的。首先,我先说一下如何理解一个复杂的数据类型。下面几个类型,你看看知道 P 是什么意思不

  

int p; int *p; int p[10]; int *p[10]; int (*p)[10]; int **p; int p(int); int (*p)(int) int*( *p (int) )[10];         如果你能完全说出 P 到底表示的是什么,到底指向的是什么,下面的东西就不用看了。

        我们具体来看一下。int  p ; 没什么难度,p就是一个普通的整型变量。

        int *p ;  从p开始,p先与* 结合,说明 p 是一个指针(指针变量的简写),然后再与 int 类型结合,说明指针指向的内容为 int 型,所以 p 是一个返回整型数据的指针。

        int p [10];  从p开始,p 先与 [ ] 结合,说明 p是一个数组,然后再与 int 类型结合,说明数组存放的元素是 int 类型,所以,p是一个由整型数据组成的数组。

        int *p[10];  从p开始,p先与[ ] 结合,(因为 [ ] 的优先级比 * 要高)。说明 p 是一个数组,再与 * 结合,说明数组存放的元素是指针类型。再与 int 结合,说明指针指向的内容的类型是整型的。所以,p 是一个由返回整型数据的指针组成的数组。又称“指针数组”:它是数组,数组里面的元素是指针类型。

        int (*p)[10]; 从p处开始,先与 * 结合,说明 p 是个指针。然后再与 [ ] 结合,说明指针指向的是数组。再与 int 结合,说明数组里面的元素是 Int 类型。所以,p 是一个指向包含10个整型数据的数组的指针。又称“数组指针”:它是指针,指向的内容是数组。

        int **p;  从 p 处开始,先与 * 结合,说明它是个指针。再与 * 结合,说明它指向的是指针,又称“指向指针的指针”。最后与 int 结合,说明它指向的元素是整型。二级指针一般与数组结合起来用,超过二级的指针,一般不用,太复杂了,没必要用了,有其它方法可以代替。

        int p (int);   p 先与()结合,说明它是个函数,函数形参是 int 类型的。再与外面那个 int 结合,说明它的返回值是整型。

        int (*p)(int);  p 先与 * 结合,说明它是一个指针,然后再与 ()结合,说明指向的是个函数,函数有个形参为 int 类型。再与外面的 int 结合,说明函数的返回值类型是 int 类型。所以, p 是一个指向有一个整型形参 且返回值是整型的函数的指针。

        最后一个,终极boss了~~p先与()结合,说明它是个函数。再与 * 结合,说明它返回值为指针。再与 [ ] 结合,说明返回的指针指向的是一个数组。再与 * 结合,说明数组里存放的元素是指针。再与 int 结合,说明该指针指向的元素是整型。p 是一个参数为整型数据且返回一个指向由10个整型指针变量组成的数组的指针变量的函数。

        是不是有点晕~~多思考一下就好啦~大家都是从这儿过来的。

转载请注明原文地址: https://www.6miu.com/read-1100278.html

最新回复(0)