【求助帖】void指针函数可以return指针吗

hongyedaxia23 hongyedaxia23 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大侠好:

小弟最近在阅读公司设备的里面的程序,公司设备程序是用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;
}
...全文
评论 7
收藏 已收藏
分享
返回顶部
hongyedaxia23
C语言 70,040 成员 243,237 内容