结构体中连续定义两个字符指针

连续定义连个字符指针:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct student
{
  char * id;
  char * name;
  int mark;
}student;

main()
{
  student * st = (student*)malloc(sizeof(student));
  st->id =(char*)malloc (sizeof (char)*20);//分配空间
  st->name=(char*)malloc (sizeof (char)*20);//分配空间
 
  /*printf("ID address: %d", st->id);
  printf("Name address: %d", st->name);
  printf("Name address: %d", &st->mark);*/
 
  printf("学号:");
  scanf("%s", st->id);
  printf("%s\n",st->id);
 
  printf("姓名:");
  scanf("%s",st->name);
  printf("学号:%s 姓名:%s\n",st->id, st->name);
  
}

如果我想知道这个结构体占用多长?(下面程序错误,为什么st-td == 0????)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Student
{
  char * id;
  char * name;
 // int mark;
}student;

char *fname = "liujie";
char *no = "201530310059";
main()
{
  student * st =(student*)malloc(sizeof(student));
  st->id =(char*)malloc (strlen(no));//分配空间
  st->name=(char*)malloc (strlen(fname));//分配空间
  printf("strlen(fname)= %d\n", strlen(fname)) ;
  printf("strlen(no)= %d\n", strlen(no)) ;
  /*printf("ID address: %d", st->id);
  printf("Name address: %d", st->name);
  printf("Name address: %d", &st->mark);*/
//  student *ss;
  printf("strlen(st->id)= %d\n", strlen(st->id)) ;
  printf("结构体总长度 = %d\n", strlen(st->id)+strlen(st->name)+sizeof(int));
  printf("学号:");
  scanf("%s", st->id);
  printf("%s\n",st->id);
  printf("姓名:");
  scanf("%s",st->name);
  printf("学号:%s 姓名:%s\n",st->id, st->name);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值