memcpy(void* a,const void* b,size_t c)
它的含义是将以b为起始地址的连续c个字节,复制到以a为起始地址的空间。它相比strcoy的优势在于不会遇到 \0 就结束。
使用1:拷贝一个字符串到指定的char数组里面:
char a[50];
char b[] = "ccc";
LOGD(TAG,"sizeof(a)=%d sizeof(b)=%d",sizeof(a),sizeof(b));
memcpy(a,b, sizeof(b));
LOGD(TAG,"a=%s,b=%s,sizeof(a)=%d sizeof(b)=%d",a,b,sizeof(a),sizeof(b));
打印如下:
06-02 11:30:06.248 24867-24867/com.jxd.jnidemo D/JXDJni_cpp: sizeof(a)=50 sizeof(b)=4
06-02 11:30:06.248 24867-24867/com.jxd.jnidemo D/JXDJni_cpp: a=ccc,b=ccc,sizeof(a)=50 sizeof(b)=4
可以看到char数组a也被赋值成了ccc。
使用2:可以用来打包结构体成char数组,然后发送给底层去解析,这里我模拟打包两个结构体,然后去解析第二个。
char c[100];
StudentStruct s1;
s1.id = 11;
s1.name = "jingxiongdi