将结构从指针类型变量复制到非指针类型变量

时间:2014-05-26 11:55:12

标签: c

我想知道,为什么以下代码不会生成核心转储? 在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);

1 个答案:

答案 0 :(得分:2)

p是指针,*是指针解除引用运算符,因此*p是结构p指向的。因此,任务是完全合法的

d = *p会将p指向的整个结构复制到d