区分 指针数组和数组指针

如何区分某某指针和指针某某

在C语言中,指针是一个非常重要的概念,它们允许程序员直接操作内存地址。但是,指针的概念很容易混淆,尤其是对于初学者来说。以下是一篇关于区分指针数组、数组指针、函数指针和指针函数的文章草稿。此文章适用人群:非纯白的初学者和反复遗忘的非初学者。


深入理解C语言中的指针概念

在C语言的世界里,指针是一把双刃剑,它既强大又容易让人混淆。
以上及以下的人机话就不多说了,我们直接把某某指针和指针某某秒了。
今天,我们将深入探讨几个常见的指针概念:指针数组、数组指针、函数指针和指针函数。通过本文,你将能够清晰地区分它们,并理解它们各自的用途。

主要核心:指针符号‘*’的优先级较低

书里原话是“指针 * 这样的一元运算符遵循从右至左的结合顺序”

开搞(悟性看注释)

①int *p[10];
②int (p)[10];
③int
p(int, int);
④void (*p)(int, int);
⑤int **p;

int *p[10]; //1:*优先级较低,所以P先和[10]结合,因此p是数组。是什么数组?
			 //2:p和[10]结合完,再和*结合,因此p是指针数组。
			 //即p是整型数组,数组里存放的每一个元素都是一个整型指针。
int (*p)[10]; //1:(*p)有小括号,所以P先和*结合,因此p是指针。是什么指针?
			   //2:p和*结合完,再和[10]结合,因此p是数组指针。
			   //即p是整型指针,指向的是一个整型数组。
int*p(int, int); //1:*优先级较低,所以P先和(int, int)结合,因此p是函数。是什么函数?
			        //2:p和(int, int)结合完,再和*结合,因此p是指针函数。
			        //即p是函数,函数返回类型是整型指针。

根据以上分析,可得

void (*p)(int, int); 
p是指针,是一个函数指针,指向一个无返回类型函数,且有两个整型形参。
int **p;
p是指针,是一个指针指针,指向一个整型指针。

结论

理解指针的不同形式对于编写高效和灵活的C程序至关重要。指针数组允许你存储多个指针,数组指针让你可以操作整个数组,函数指针提供了一种调用函数的间接方式,而指针函数则允许你从函数中返回指针。希望本文能够帮助你更好地理解这些概念,并在你的C编程之旅中助你一臂之力。

你可能感兴趣的:(算法,数据结构,c语言)