C指针学习分享之“了解指针”

来源:互联网 发布:红蜘蛛软件破解网络 编辑:程序博客网 时间:2024/05/29 18:02

人生的第一篇blog就要这样奉献给“指针”了!(ps:要开车啦,请系好安全带)以下是我在学习指针时的一点经验和总结,当然离不开前辈们的指导,接下来,我们一起开始学习“指针”吧,这一篇,我们先一起“了解指针”!go,go,go~

        如何理解指针,我认为这是学习指针的基础。每一个指针都像表达式一样,存在优先级,只要按照优先级的规则层层剥茧,我们就能清楚的了解每一种指针都代表什么。直接通过例子来学习比较清晰明了。

   (1).  int p;                            

        结论:p是整型变量

   (2).  int *p;                           

        分析:变量为p,先结合左边的*,表示p是指针,指针所指向的内容的类型为int。

        结论:p是返回一个整型数据的指针。

   (3).  int a[100];

        分析:变量为a,先与右边的[]结合,表示a是数组,再与int结合,表示数组中的元素是整型的。

        结论:a是由整型数据组成的数组。

   (4).  int (*a)[100];

        分析:变量为a,先与*结合,表示a是指针,再与[]结合,表示指针指向的是数组,这个数组是由整型变量构成。

        结论:a是一个指向由 整型数据组成的数组的指针。(数组指针)

    (5). int *(a[100]);

        分析:变量a是数组,再与*结合,表示a是一个指针数组,指针指向的数据类型为整型。

        结论:a是一个由指向数据类型为整型的指针组成的数组。(指针数组)

   (6). int func();

        结论:func是一个返回整型数据的函数。

   (7). int (*func)(int);

        分析:变量func先与*结合,表示func是一个指针,再与右边的()结合,表示func指向一个函数,该函数有一个整型参数,最后再与最左边的int结合,表示函数的返回类型为整型。

        结论:func是一个指向有一个整型参数,且返回值为整型的函数的指针。(函数指针)

    (8). int *(*p(int))[100];

        分析:变量p先与()结合,表示p是一个函数,这个函数带有一个整型参数;再与紧挨着p前面的*结合,表示函数的返回值是指针,再与[]结合,表示,指针指向一个数组,最后在与最外层的*结合,表示该数组元素是由指向整型数据的指针组成。

        结论:是一个参数为整型、返回值为指针的函数,该指针指向包含0-99下标元素的数组,数组元素是指向整型数的指针。

    (9). char *(*c[10])(int **p);

        分析:变量c先与[]结合,表示c是一个数组,再与*结合,表示c是一个指针数组,指针数组的元素是一个指向含有一个整型参数,且返回值为char型的函数构成的指针。

        结论:c是一个包含0-9下标元素的数组,数组元素是指针,指针指向参数是整型指针的指针、返回值为char型的函数。

    (10). int (*func[])();

        分析:变量func[]是一个数组,先与*结合,表示func数组元素是指针,指针指向一个函数,该函数的返回值为整型。

        结论:func是数组,其中数组元素为指向返回整型的函数的指针。

    (11). int (*func())[];

        分析:func先与()结合,表示func为一个函数,再与*结合,表示func是一个指针函数,再与[]结合,表示func是一个指向数组的指针函数。

        结论:func是一个函数,函数的返回值为指向整型数组的指针。

大家都学会了吗?检验学习成果的时刻到了,请根据上面的方法,自己尝试解析下面的问题:

int *(*(*(*func)())[10])();

(欢迎大家踊跃参与,(*^__^*))《过两天将揭晓答案》

PS:再此,要特别鸣谢,我的“右同桌”——小宁同学,在他细心、认真检查下才会有我的第一篇blog。(大家若是发现有不对的地方请指出,谢谢啦~)

原创粉丝点击