char *strinv(const char *s); //that's the given prototype
我对字符串部分有点不安全。这是否意味着函数在调用时会自动取消引用?或者函数被定义为指针?
提前感谢您的澄清。
此函数声明
char * strinv(const char *s);
声明了一个返回类型为char *
的函数。例如,函数可以为字符串动态分配内存,并返回指向该字符串的指针。
这里有一个演示程序,展示了如何定义例如函数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * strinv(const char *s)
{
size_t n = strlen( s );
char *t = malloc( n + 1 );
if ( t != NULL )
{
size_t i = 0;
for ( ; i != n; i++ ) t[i] = s[n-i-1];
t[i] = ' ';
}
return t;
}
int main(void)
{
const char *s = "Hello Worlds!";
char *t = strinv( s );
puts( t );
free( t );
return 0;
}
程序输出为
!sdlroW olleH
指向函数的指针的声明可能看起来像那样愚蠢
char * ( *fp )( const char * ) = strinv;
要取消引用指针并调用指向的函数,可以编写
( *fp )( s );
尽管写就足够了
fp( s );