#include <stdio.h> #include <stdlib.h> #include <string.h> struct namect{ char fname[20]; //数组 char *lname; //指针 int letters; }; void getinfo(struct namect *); struct namect makeinfo(struct namect); void showinfo(struct namect *); int main(){ struct namect persion; getinfo(&persion); persion=makeinfo(persion); showinfo(&persion); return 0; } /** * 已指针方式传递结构体 */ void getinfo(struct namect * pst){ printf("Entenr you first name "); gets(pst->fname); //不读取 ,会留在输入缓冲区中呢 //fgets(pst->fname,20,stdin); printf("Entenr you last name "); //gets(pst->lname); char temp[100]; gets(temp); pst->lname = (char *)malloc(strlen(temp)+1); strcpy(pst->lname,temp); //fgets(pst->lname,20,stdin); } /** * 传递结构体作为参数 */ struct namect makeinfo(struct namect info){ info.letters = strlen(info.fname) + strlen(info.lname); return info; } void showinfo(struct namect * pst){ printf("%s %s,your name contains %d letters ",pst->fname,pst->lname,pst->letters); }