C语言指针、参数与变量使用全解析
1. 指针传递的使用场景
在C语言编程中,指针传递是一种十分重要的技术,它能在多种情况下发挥显著作用:
- 函数需返回多个值 :当一个函数需要返回多个值时,指针传递是一种有效的解决方案。
- 数据复制繁琐 :若传递给函数或从函数返回的数据量较大,复制数据会很繁琐。例如,在图书馆的例子中,给别人一本书的目录编号比复制整本书要容易得多。
- 传递复杂数据集合 :当需要传递的信息是一个复杂的值集合,且函数需要检查某些值并修改其他值时,传递整个集合的单个引用比复制函数所需的每个值要容易。
2. NULL指针值
C语言定义了一个特殊的指针值 NULL
,表示“无地址”。可以将 NULL
值赋给任何指针,例如 myPointer = NULL
,也可以将指针值与 NULL
进行比较,如 if ( myPointer==NULL )
。 NULL
意味着指针不指向任何变量。
实际上,内存地址从0开始递增,但在OS X和BSD Unix系统中,地址0或其附近不会分配变量。这是为了确保程序员能确定没有有效的变量地址会是0。 NULL
常量就是地址0,将 NULL
赋给指针等同于将其整数值设为0。很多C程序员会使用简写来测试指针变量是否指向一个值: