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!
快捷操作:
坚其志,苦其心,劳其力,事无大小,必有所成。
@如有侵权,请作者本人尽快与我(chrayo#163.com)联系,我将及时删除侵权内容。