ubuntu下编译:gcc -m32 -o main main.c
#include <stdio.h>
typedef struct stu{
unsigned char * name;
unsigned char old;
unsigned int num;
}STU_STRUCT;
int myprintf(char *format,...)
{
char *p = (char *)&format;//取字符串指针的地址
char num;
char *str;
STU_STRUCT stu;
printf("%s",format);
p = p + sizeof(char *);
printf("%d\n",*((int *)p));
p = p + sizeof(int);
printf("%c\n",*((char *)p));//取栈地址p的数据即字符
p = p + sizeof(char *);
str = (char *)(*((int *)p));//重点注意!*((int *)p)取栈地址p的数据即字符串的地址,(char *)强制转换为字符串指针(否则警告)
printf("%s\n",str);
p = p + sizeof(char *);
stu = *(STU_STRUCT *)p;//取栈地址p的数据即stu的地址
printf("name:%s,old:%d,sizeof(struct person):%d\n",stu.name,stu.old,sizeof(struct stu));
return 0;
}
int main()
{
STU_STRUCT stu1 = {"hyx",24,12345};
printf("name:%s,old:%d\n",stu1.name,stu1.old);
printf("hello\n");
myprintf("world\n",12,'c',"Hong",stu1);
}