C语言中,指针是一种特殊的变量,它存储的是另一个变量在内存中的地址。使用指针,我们可以直接访问、修改另一个变量的值,或者在函数间传递参数和返回值。指针的用处主要体现在以下几个方面。
使用malloc函数可以在程序运行时动态地从内存中分配一块指定大小的内存空间,malloc将返回这块空间的首地址。我们可以将这个地址保存在指针变量中,然后对这块内存空间进行访问。这种方式相比于静态分配内存,可以更加灵活地利用内存。
除此之外,动态分配内存还可以用于创建链表、队列、树等数据结构,以及字符串、图像等变长数据的存储。
在C语言中,数组名在表达式中会被解释为数组的首地址,因此,可以用指向数组首元素的指针变量来访问数组中的元素。同时,指向数组的指针还可以做指针算术运算,如指针加减、指针比较等,从而更加方便地对数组进行操作。
C语言中,在函数中传参时,常见的有值传递和引用传递两种方式。指针作为参数传递是一种引用传递,它允许我们在函数中对实参的内容进行修改。
例如,如果要在函数中交换两个变量的值,可以定义一个指向变量的指针,在函数中交换这两个指针所指向的变量的值,实现变量交换的效果。
指针还可作为函数的返回值,通过函数返回指向新创建变量的指针,实现动态分配内存的效果。