- 论坛徽章:
- 0
|
代码:
#include <stdio.h>
#include <unistd.h>
struct st {
int id;
char ch;
char name[10];
double db;
};
main()
{
int id;
struct st stu={9,'c',"name",3.14};
char ch;
char name[11];
double db;
printf("sizeof sturct=%d\n",sizeof(struct st)); //==24
memcpy(&id,&stu,sizeof(int));
printf("id=%d\n",id);
memcpy(&ch,(char *)&stu+sizeof(int),4);
printf("ch=%c\n",ch);
//memcpy(name,(char *)&stu+sizeof(int)+2,10); /* 1 */
memcpy(name,(char *)&stu+sizeof(int)+1,10);
printf("name=%s\n",name);
//memcpy(&db,(char *)&stu+sizeof(int)+1+10,sizeof(double)); /* 2 */
memcpy(&db,(char *)&stu+16,sizeof(double));
printf("db=%lf\n",db);
} |
上面代码执行结果正确,哪位高人解析一下为什么注释的两行是错误的? |
|