野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13636|回复: 3

W25Q64存储小数和整数

[复制链接]
发表于 2018-11-1 18:06:49 | 显示全部楼层 |阅读模式
SPI—读写串行FLASH(W25Q64),程序中有这样一段SPI_FLASH_BufferWrite((void*)int_bufffer, SPI_FLASH_PageSize*2, sizeof(int_bufffer));这个函数的形参为SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);int_bufffer32位,pBuffer8位,明显与形参不符,如何解释这个(void*)?
回复

使用道具 举报

发表于 2018-11-2 08:45:52 | 显示全部楼层
所有指针都是32位
回复 支持 反对

使用道具 举报

发表于 2018-11-2 08:46:24 | 显示全部楼层
①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:
int *pint;
void *pvoid;
pvoid = pint; /* 不过不能 pint = pvoid; */
如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint = (int *)pvoid;


由于void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值,因此还可以用void指针来作为函数形参,这样函数就可以接受任意数据类型的指针作为参数。例如:
void * memcpy( void *dest, const void *src, size_t len );
void * memset( void * buffer, int c, size_t num );
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 10:12:23 | 显示全部楼层
Brave000 发表于 2018-11-2 08:46
①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:
int *pint;
void ...

void指针指向其他类型的指针,必须要要进行强制转换吗?但我上面的例子的形参是u8* pBuffer,不是void* pBuffe,而实参是int 型数组,按道理说指向它的指针是int型指针,但在使用时强制转换成了void*型的指针,跟你说的void*型指针赋值时需要强制转换成同类型的指针是反的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-7 01:18 , Processed in 0.039426 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表