关于函数CH376DiskQuery的问题

对于函数CH376DiskQuery UINT8 CH376DiskQuery( PUINT32 DiskFre ) /* 查询磁盘剩余空间信息,扇区数 */ { UINT8 s; UINT8 c0, c1, c2, c3; s = CH376SendCmdWaitInt( CMD0H_DISK_QUERY ); if ( s == USB_INT_SUCCESS ) { /* 参考CH376INC.H文件中CH376_CMD_DATA结构的DiskQuery */ xWriteCH376Cmd( CMD01_RD_USB_DATA0 ); xReadCH376Data( ); /* 长度总是sizeof(CH376_CMD_DATA.DiskQuery) */ xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mTotalSector */ xReadCH376Data( ); xReadCH376Data( ); xReadCH376Data( ); c0 = xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mFreeSector */ c1 = xReadCH376Data( ); c2 = xReadCH376Data( ); c3 = xReadCH376Data( ); *DiskFre = c0 | (UINT16)c1 << 8 | (UINT32)c2 << 16 | (UINT32)c3 << 24; xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mDiskFat */ } else *DiskFre = 0; return( s ); }

这个函数不太理解,主要是其实参DiskFre在这里起了什么作用?还有这句话 *DiskFre = c0 | (UINT16)c1 << 8 | (UINT32)c2 << 16 | (UINT32)c3 << 24;有什么作用啊?求高人给这个函数的详细解释,不胜感激,谢了!

DiskFre 是一个指向32位的指针变量, *DiskFre = c0 | (UINT16)c1 << 8 | (UINT32)c2 << 16 | (UINT32)c3 << 24; 是给DiskFre 所指向的地址赋值


DiskFre在这里起了什么作用呢?它是这个函数的实参,但是在函数中却没有用它给什么变量赋值,而是被赋值,而且也没有被返回,它在这里有什么用吗?


DiskFre 是个形参,该函数的输入参数是一个指针,该函数的功能是对该指针所指向的数值进行修改。 这些都是C的基本语法, 好好看看书吧


只有登录才能回复,可以选择微信账号登录