如果函数不修改变量,那么应该将对应的参数声明成只读指针,如下面的例子所示:
- void printNode( const struct Node *pNode );
- {
- printf( "Key: %ld\n", pNode->key );
- printf( "Name: %s\n", pNode->name );
- }
当在调用函数时把数组名作为参数,那么也是在进行“传址调用”,因为数组名会自动地被转换为指向数组内第一个元素的指针。
通常情况下,函数需要返回指针,如下例函数 mkNode()。该函数动态地建立一个新的 Node 对象,并将其地址传递给调用者:
- #include <stdlib.h>
- struct Node *mkNode()
- {
- struct Node *pNode = malloc( sizeof(struct Node) );
- if ( pNode != NULL )
- initNode( pNode );
- return pNode;
- }