The problem is that your pointer didn't point to any object!!!!
You have 3 options:
use malloc
like this
struct integer *pointer = (struct integer*)malloc(1*sizeof(struct integer));
OR
main()
{
struct integer nonPointer;
nonPointer.x[0]=5;
printf("pointer->x[0] %d",nonPointer.x[0]);
}
OR
main()
{
struct integer integerObj;
struct integer *pointer=&integerObj;
pointer->x[0]=5;
printf("pointer->x[0] %d",pointer->x[0]);
}
Now about the copy, if you need to copy object (like strcpy
with string ) you can use memcpy
:
void *memcpy(void *str1, const void *str2, size_t n)
in your case you can use it like this:
struct integer *target, *source;
target=(struct integer*)malloc(1*sizeof(struct integer));
source=(struct integer*)malloc(1*sizeof(struct integer));
source->x[0]=5;
memcpy(target, source, sizeof(struct integer));
printf("target->x[0] %d",target->x[0]);