
正文
c语言指针与结构体之内存动态分配
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
struct dangdangtest
{
char email[];
char name[];
char addr[];
int num;
int bugnum;
char tel[];
char phone[];
double RMB; };
void main2()
{
//struct dangdangtest dd[1024*1024];//数组越界
//动态分配一个元素
struct dangdangtest *p = (struct dangdangtest *)malloc(sizeof(struct dangdangtest)*);
//写数据
sprintf(p->email,"15465325698@qq.com");//初始化
sprintf(p->name,"lj");
sprintf(p->addr,"重庆");
p->num = ;
p->bugnum = ;
sprintf(p->tel,"");
sprintf(p->phone,"");
p->RMB = 52.24;
//读数据
printf("\n%s,%s,%s,%d,%d,%s,%s,%f",p->email,p->name,p->addr,p->num,p->bugnum,p->tel,p->phone,p->RMB); getchar();
} void main()
{
int i;
struct dangdangtest *p = NULL;
struct dangdangtest *px = NULL;
p= (struct dangdangtest *)malloc(sizeof(struct dangdangtest)*);
//方式一 P[i]等价于一个结构体 数组访问的方式
//p[i]=p+i
/*for(i=0;i<10;i++)
{
sprintf(p[i].name,"lj%d",i);
sprintf(p[i].addr,"重庆%d",i);
p[i].num = 100;
printf("\n%s,%s,%d",p[i].name,p[i].addr,p[i].num);
}*/ //指针访问的方式
//for(i=0;i<10;i++)
//{
// //加上大括号 避免优先级的歧义
// sprintf((*(p+i)).name,"lj%d",i);
// sprintf((*(p+i)).addr,"重庆%d",i);
// (*(p+i)).num = 100;
// printf("\n%s,%s,%d",(*(p+i)).name,(*(p+i)).addr,(*(p+i)).num);
//} //指针轮寻
px = p;
for(px;px<p+;px++)
{
sprintf(px->email,"lj%x",px);
sprintf(px->addr,"重庆%x",px);
px->num = ;
printf("\n%s,%s,%d",px->email,px->addr,px->num);
}
getchar(); }
注意测试的时候main处修改 和注释就好了






