如何区分某某指针和指针某某
在C语言中,指针是一个非常重要的概念,它们允许程序员直接操作内存地址。但是,指针的概念很容易混淆,尤其是对于初学者来说。以下是一篇关于区分指针数组、数组指针、函数指针和指针函数的文章草稿。此文章适用人群:非纯白的初学者和反复遗忘的非初学者。
深入理解C语言中的指针概念
在C语言的世界里,指针是一把双刃剑,它既强大又容易让人混淆。
以上及以下的人机话就不多说了,我们直接把某某指针和指针某某秒了。
今天,我们将深入探讨几个常见的指针概念:指针数组、数组指针、函数指针和指针函数。通过本文,你将能够清晰地区分它们,并理解它们各自的用途。
主要核心:指针符号‘*’的优先级较低
书里原话是“指针 * 这样的一元运算符遵循从右至左的结合顺序”
开搞(悟性看注释)
①int *p[10];
②int (p)[10];
③intp(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编程之旅中助你一臂之力。