What
定义一个Dog结构体,通过say函数把Dog的成员通过字符串的形式输出。
struct Dog //定义一个Dog结构体类型{char *name;int age;double weight;};char *say(struct Dog dog) //根据Dog结构来分配内存空间,然后被dog连结一起。{static char info[50];sprintf(info, "name=%s age=%d weight=%f", dog.name, dog.age, dog.weight);// printf("%p\n",info);return info; //字符串的名字会自动转换为字符串的地址,所以不用再多此一举加 & 了}void main(){struct Dog dog;char *info = NULL;dog.name = "Dog";dog.age = 10;dog.weight = 30.6;info = say(dog);//dog 是值传递 也就是拷贝一份给say的dog形参。也可以修改为地址的形式。printf("%s\n", info);//需要注意的是,info存储的是字符串首个字符的地址,所以通过*info访问的是字符串的第一个字符 输出字符%c 而不是%f 如果是*info 输出为%f程序会被终止// 输出字符串就是传入字符串的起始地址。getchar();}
注意:
结构体变量是按值传递的,也就是拷贝一份给其他结构体变量。
当然也可以改为通过指针的方式
