作者在 2012-06-09 09:47:39 发布以下内容
最近看到void*,老是弄不清楚*((INT8S*)p[param->Current_Item].pData)=f_temp;,认为不能这样写,只有写成这样才是正确的写法:
void *p;
int a=10;
p = &a;
但是后来仔细理解一下后,发现(INT8S*)p[param->Current_Item].pData已经有明确的指向地址了,因此可以这样写。因为如果没有初始地址时,系统是随机分配的存储地址,运行时系统读取不到*((INT8S*)p[param->Current_Item].pData),因此报错。然后试着运行了下int *指针,只要指针有初始地址,都可以这样写。测试代码如下:int a=10;
p = &a;
#include <stdio.h>
void main(void)
{
void *p;
int *c;
int b;
int a = 10;
c = &b;
p = &b;
*((int*)p) = a;
*c = a;
printf("*((int*)p) = %d\r\n",*((int*)p));
printf("*c = %d\r\n",*c);
}
这样就可以了,只要指针有初始地址,指针赋值则有两种方式:*p = a;与p = &avoid main(void)
{
void *p;
int *c;
int b;
int a = 10;
c = &b;
p = &b;
*((int*)p) = a;
*c = a;
printf("*((int*)p) = %d\r\n",*((int*)p));
printf("*c = %d\r\n",*c);
}