嵌入式八股文之深入理解 C语言中的指针相关概念
在 C 编程中,指针是一个强大且重要的概念,它允许我们直接操作内存地址。然而,指针相关的概念众多,如函数指针、指针函数、指针常量、常量指针、数组指针、指针数组以及野指针,这些概念容易混淆,却又在不同的编程场景中发挥着关键作用。本文将深入剖析这些概念,帮助读者更好地理解和运用它们。
一、函数指针
函数指针是指向函数的指针变量。在 C 中,函数在内存中也占据一定的地址,函数指针可以存储这个地址。通过函数指针,我们可以像调用普通函数一样调用它所指向的函数。函数指针的声明格式为:返回类型 (*指针变量名)(参数列表)。例如,int (*funcPtr)(int, int)表示funcPtr是一个指向函数的指针,该函数接受两个int类型的参数并返回一个int类型的值。函数指针常用于回调函数,当需要根据不同的条件执行不同的函数时,函数指针就能派上用场。
速记:函数指针的本质在于它是一个指针,所以记清楚它的格式即可
二、指针函数
指针函数与函数指针恰好相反,它是一个返回指针的函数。其声明格式为:返回类型* 函数名(参数列表)。例如,int* func(int a, int b)表示func是一个指针函数,它接受两个int类型的参数,返回一个int类型的指针。指针函数常用于需要返回动态分配内存的情况,比如在函数中创建一个数组并返回指向该数组首元素的指针。
速记:指针函数的本质在于他是一个函数,所以指针函数就是返回值为指针的一个函数
三、指针常量
指针常量是指指针本身的值是一个常量,即一旦初始化后,指针就不能再指向其他地址。其声明格式为:类型* const