C语言指针详解:从基础到进阶

需积分: 33 6 下载量 56 浏览量 更新于2024-12-23 收藏 214KB PDF 举报
C语言指针经验总结 C语言的强大和自由性很大程度上体现在其灵活的指针运用上。因此,指针可以说是C语言的灵魂。但是,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。实际上,Pascal语言本身也是支持指针的,从最初的Pascal发展至今的Object Pascal,可以说在指针运用上丝毫不会逊色于C语言的指针。 在C语言中,指针是非常重要的一部分,理解指针是非常必要的。下面我们将从简单的类型开始,逐步分析复杂类型的指针。 首先,让我们从简单的类型开始:int p;这里p是一个普通的整型变量。 然后,我们来看一个指针:int *p;这里p是一个返回整型数据的指针。从p处开始,先与*结合,说明p是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型。 再然后,我们来看一个数组:int p[3];这里p是一个由整型数据组成的数组。从p处开始,先与[]结合,说明p是一个数组,然后与int结合,说明数组里的元素是整型的。 接下来,我们来看一个复杂的类型:int *p[3];这里p是一个由返回整型数据的指针所组成的数组。从p处开始,先与[]结合,因为其优先级比*高,说明p是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int结合,说明指针所指向的内容的类型是整型的。 下一个类型是:int (*p)[3];这里p是一个指向由整型数据组成的数组的指针。从p处开始,先与*结合,说明p是一个指针,然后再与[]结合,说明指针所指向的内容是一个数组,然后再与int结合,说明数组里的元素是整型的。 再下一个类型是:int **p;这里p是一个指针,指向的元素是指针,指针所指向的元素是整型数据。从p开始,先与*结合,说明p是一个指针,然后再与*结合,说明指针所指向的元素是指针,然后再与int结合,说明该指针所指向的元素是整型数据。 最后,我们来看一个函数指针:int p(int);这里p是一个函数,函数有一个整型变量的参数,返回值是整型数据。从p处开始,先与()结合,说明p是一个函数,然后进入()里分析,说明该函数有一个整型变量的参数,然后再与外面的int结合,说明函数的返回值是整型数据。 最后一个类型是:int (*p)(int);这里p是一个指针,指向的是一个函数,函数有一个整型变量的参数,返回值是整型数据。从p处开始,先与指针结合,说明p是一个指针,然后与()结合,说明指针指向的是一个函数,然后再与()里的int结合,说明函数有一个int型的参数,最后再与最外层的int结合,说明函数的返回值是整型数据。 C语言的指针类型非常丰富多样,我们需要从简单的类型开始,逐步分析复杂类型的指针,以便更好地理解和使用指针。