我想知道,为什么以下代码不会生成核心转储? 在func()中,我正在复制这样的东西:
d = *p;
如果我错了,请纠正我。
它是复制整个结构,还是只复制前4个字节?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ABCD
{
char *ptr;
int abcd;
char *ptr1;
};
int func ( struct ABCD *p )
{
struct ABCD d;
d = *p;
printf (" \n Inside func, and value : %d and str is %s ", d.abcd, d.ptr1);
}
int main ()
{
struct ABCD a;
struct ABCD *ptr;
ptr = &a;
ptr->abcd = 10;
ptr->ptr1 = malloc (10);
strcpy ( ptr->ptr1, "HI" );
func (ptr);
答案 0 :(得分:2)
p
是指针,*
是指针解除引用运算符,因此*p
是结构p
指向的。因此,任务是完全合法的
d = *p
会将p
指向的整个结构复制到d