掌握复杂类型:轻松理解指针

需积分: 33 0 下载量 148 浏览量 更新于2024-09-03 收藏 214KB PDF 举报
"本文旨在帮助读者克服对指针的恐惧,通过深入解析复杂的类型来理解指针的概念。文章首先强调理解复杂类型的要点,即关注运算符的优先级,就像处理普通表达式一样。作者按照从变量名到运算符的顺序逐步剖析,用实例解释不同类型声明的含义。 1. 对于 `intp;`,这是基础的整型变量,没有使用指针操作。 2. `int*p;` 是一个指针,`*` 说明 `p` 指向一个 `int` 类型的值。 3. `intp[3];` 是一个整型数组,`[]` 表示数组长度为 3。 4. `int*p[3];` 是一个数组,其中的元素是 `int` 类型的指针,意味着每个元素都能指向一个 `int` 值。 5. `int(*p)[3];` 是一个指向整型数组的指针,这里的 `(*)` 提升了优先级,表示 `p` 指向的是一个包含整数的数组。 6. `intp;` 是一个指针,它指向一个 `int` 类型的指针,即二级指针,但文章指出,在复杂的类型中通常只涉及一级指针,更高级的指针并不多见。 7. `intp(int);` 是一个函数,`p` 是一个接受一个整数参数并返回整数的函数指针。 8. `Int(*p)(int);` 是一个更复杂的函数指针,`*p` 是一个指向 `Int` 类型函数的指针,该函数接受一个 `int` 参数。 理解这些类型的关键在于掌握指针运算符的优先级和它们在类型声明中的作用。通过逐步拆解和分析,即使是复杂的指针声明也能变得清晰易懂。掌握了这些基础,理解更高阶的指针概念和实际编程应用就会更加得心应手。"