【求助帖】void指针函数可以return指针吗
各位大侠好:
小弟最近在阅读公司设备的里面的程序,公司设备程序是用Labwindows/CVI开发的,其中有一段代码,小弟有点疑惑,还请各位大侠帮忙点拨。谢谢!
1)void指针空函数可以return指针?
2)形参pnNum为int型指针,在语句 *pnNum = atoi(psToken)中*pnNum是否指的是取指针内容的意思?
3)为什么要以&sys.nRShunt,int *pnNum指针和地址的方式传递值?是否可以直接sys.nRShunt的int型直接传递?
=================================================================
主程序中的语句:
sys.pfRShunt = string_to_array(sData, FLOAT, &sys.nRShunt);
(sys.pfRshunt是在头文件中声明的为float浮点指针,sData是字符数组,sys.nRShunt是头文件中声明的int值)
string_to_array函数定义如下:
void *string_to_array(char *sStr, int type, int *pnNum)
{
int i;
char *psToken;
int *iArray;
long *lArray;
float *fArray;
double *dArray;
psToken = strtok(sStr, ",");
if ( psToken ) *pnNum = atoi(psToken);
if ( *pnNum > 0 )
{
if ( type == INT ) iArray = calloc(*pnNum, sizeof(int));
if ( type == LONG ) lArray = calloc(*pnNum, sizeof(long));
if ( type == FLOAT ) fArray = calloc(*pnNum, sizeof(float));
if ( type == DOUBLE ) dArray = calloc(*pnNum, sizeof(double));
i = 0;
while ( (psToken = strtok(NULL, ",")) != NULL )
{
if ( type == INT ) iArray[i++] = atoi(psToken);
if ( type == LONG ) lArray[i++] = atol(psToken);
if ( type == FLOAT ) fArray[i++] = atof(psToken);
if ( type == DOUBLE ) dArray[i++] = atof(psToken);
}
if ( type == INT ) return iArray;
if ( type == LONG ) return lArray;
if ( type == FLOAT ) return fArray;
if ( type == DOUBLE ) return dArray;
}
return NULL;
}