请教一个联合体的问题和sizeof的问题?
1.sizeof问题:
char *p="12345"; sizeof(p) 结果为4, char p[]="12345"; sizeof(p) 结果为6
union tag_u{ int b; int i; float f; struct { unsigned short len; char buf[1]; } s; char n[1]; struct { int len; int cap; //fzobj **items; } a; struct { char sorted; int len; int cap; //struct keyval *items; } d; struct { int num; int gen; //struct pdf_xref_s *xref; } r;} ;char *p="1235678098534909773409298340089230498"; tag_u *pu=(tag_u *)new char[sizeof(tag_u)+strlen(p)]; pu->s.len=strlen(p); memcpy(pu->s.buf,p,3); pu->s.buf[3]='\0'; cout<<pu->s.buf; //这里打印的是123,因为联合体长度限制只能打印123,请问如何打印出完整数据