人较笨且记性不好,故记录在此.折叠代码打不开请F5.本博中很多是转载收录其他网友的文章(原文地址请见博文末尾),所有权为原作者所有!!!
此博客已不再更新和维护,欢迎关注我的github新博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

2011年1月5号

指针与结构体

struct person {

  char *name;      // 姓名

  char address[30];   // 家庭地址

  int height;       // 身高

  struct person * next;

 };

声明结构体对象的两种情况:

1)指明结构体: struct person John,然后John调用成员"John.name ”。

2)指明结构体指针:struct person * Nose,然后Nose调用成员"Nose->name ”,不过在使用Nose之前还得为Nose分配内存"Nose = new person;",否则会报错。

而这里需要注意的是成员的初始化:(以"John"为例)

其一,"name"是指针变量,赋值可以" John.name = Johnson; ",但不能直接" scanf("%s",John.name); ",需为"John.name"分配内存"John.name = new char;"才可以" scanf("%s",John.name); ”;

其二,"address"是指针常量,赋值可以"scanf(%s", John.address);"或 "strcpy(John.address, "china");",但不能" John.address = "china"; ",这里就没有必要给"John.address"分配内存了,因为结构体里已经指明了;

总之,在使用有关指针的时候一定要注意分配内存之后再使用!我经常犯这个错误。

 

若有不对,望各位朋友指出!Thank you!

 

 

posted on 2011-01-05 21:11  子坞  阅读(423)  评论(0编辑  收藏  举报