What

定义一个Dog结构体,通过say函数把Dog的成员通过字符串的形式输出。

  1. struct Dog //定义一个Dog结构体类型
  2. {
  3. char *name;
  4. int age;
  5. double weight;
  6. };
  7. char *say(struct Dog dog) //根据Dog结构来分配内存空间,然后被dog连结一起。
  8. {
  9. static char info[50];
  10. sprintf(info, "name=%s age=%d weight=%f", dog.name, dog.age, dog.weight);
  11. // printf("%p\n",info);
  12. return info; //字符串的名字会自动转换为字符串的地址,所以不用再多此一举加 & 了
  13. }
  14. void main()
  15. {
  16. struct Dog dog;
  17. char *info = NULL;
  18. dog.name = "Dog";
  19. dog.age = 10;
  20. dog.weight = 30.6;
  21. info = say(dog);//dog 是值传递 也就是拷贝一份给say的dog形参。也可以修改为地址的形式。
  22. printf("%s\n", info);//需要注意的是,info存储的是字符串首个字符的地址,所以通过*info访问的是字符串的第一个字符 输出字符%c 而不是%f 如果是*info 输出为%f程序会被终止
  23. // 输出字符串就是传入字符串的起始地址。
  24. getchar();
  25. }

注意:

结构体变量是按值传递的,也就是拷贝一份给其他结构体变量。
当然也可以改为通过指针的方式