我想知道memcpy()
关于内存分配的结果是怎样的。
#include<stdio.h>
#include<string.h>
typedef struct {
char myname[7] ;
} transrules;
trans typedef struct {
char ip ;
int udp;
transrules rules[256];
} __attribute__ ((__packed__)) myudp;
myudp __attribute__ ((__packed__)) udpdata ;
char arr[400] ;
int main() {
memset (&udpdata , 0 ,sizeof(udpdata));
udpdata.ip = 'a' ;
udpdata.udp = 13 ;
udpdata.rules[0].myname = "lalla\0" ;
memcpy (&arr , &udpdata, sizeof(udpdata));
printf("%c",arr[0]);
return 0;
}
关于代码,我们如何打印出结构transrules
中的字符数组?
PS :是的,这段代码抛出了一个错误,见鬼char
!
既然定义的数组是char
类型的,为什么arr1仍然接受带有memcpy()
的整数值?
发布于 2012-09-05 08:08:02
关于代码,我们如何打印出结构transrules中的字符数组?
/* incorrect -> udpdata.rules[0].myname = "lalla\0" ; */
strcpy(udpdata.rules[0].myname,"lalla") ;
printf("%s\n",udpdata.rules[0].myname);
既然定义的数组是char类型的,为什么arr 1仍然接受带memcpy的整数值?
memcpy不知道也不关心它要复制到的底层数据类型可能是什么。它接受void指针,并将一个或多个字节中的值复制到一个或多个其他字节:
void * memcpy ( void * destination, const void * source, size_t num );
https://stackoverflow.com/questions/12272672
复制相似问题