VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 519|回复: 5

[已解决]c语言结构体变量赋值

[复制链接]
78_avatar_middle
最佳答案
0 
在线会员 发表于 2022-11-1 11:03:31 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>
  2. #include <string.h>

  3. struct Books
  4. {
  5.    char  title[50];
  6.    char  author[50];
  7.    char  subject[100];
  8.    int   book_id;
  9. };

  10. int main( )
  11. {
  12.    struct Books Book1;        /* 声明 Book1,类型为 Books */
  13.    struct Books Book2;        /* 声明 Book2,类型为 Books */

  14.    /* Book1 详述 */
  15.    strcpy( Book1.title, "C Programming");
  16.    strcpy( Book1.author, "Nuha Ali");
  17.    strcpy( Book1.subject, "C Programming Tutorial");
  18.    Book1.book_id = 6495407;

  19.    /* Book2 详述 */
  20.    strcpy( Book2.title, "Telecom Billing");
  21.    strcpy( Book2.author, "Zara Ali");
  22.    strcpy( Book2.subject, "Telecom Billing Tutorial");
  23.    Book2.book_id = 6495700;

  24.    /* 输出 Book1 信息 */
  25.    printf( "Book 1 title : %s\n", Book1.title);
  26.    printf( "Book 1 author : %s\n", Book1.author);
  27.    printf( "Book 1 subject : %s\n", Book1.subject);
  28.    printf( "Book 1 book_id : %d\n", Book1.book_id);

  29.    /* 输出 Book2 信息 */
  30.    printf( "Book 2 title : %s\n", Book2.title);
  31.    printf( "Book 2 author : %s\n", Book2.author);
  32.    printf( "Book 2 subject : %s\n", Book2.subject);
  33.    printf( "Book 2 book_id : %d\n", Book2.book_id);

  34.    return 0;
  35. }
复制代码


strcpy( Book1.title, "C Programming"); 不理解这句为什么采用这样的方式来赋值,而不是直接Book1.title="C Programming"?我试过采用这种方式赋值会报错。
最佳答案
41_avatar_small
2022-11-2 15:19:44
本帖最后由 ahn 于 2022-11-2 15:22 编辑

说来有一匹布那么长...
这里的知识点涉及到数组、字符数组、字符串字面量、指针、指向字符串字面量的字符指针、内存模型(栈、常量区)等。
给你个例子,对比着看,定有所获:
  1. #include <stdio.h>

  2. struct Books
  3. {
  4.    char *title;  // 区别:const char *title;
  5.    char *author;
  6.    char *subject;
  7.    int   book_id;
  8. };

  9. int main()
  10. {
  11.    struct Books Book1;  /* 声明 Book1,类型为 Books */

  12.    /* Book1 详述 */
  13.    Book1.title = "C Programming";
  14.    // Book1.title[0] = 'D';  // 错误!为什么?
  15.    Book1.author = "Nuha Ali";
  16.    Book1.subject = "C Programming Tutorial";
  17.    Book1.book_id = 6495407;

  18.    /* 输出 Book1 信息 */
  19.    printf("Book 1 title : %s\n", Book1.title);
  20.    printf("Book 1 author : %s\n", Book1.author);
  21.    printf("Book 1 subject : %s\n", Book1.subject);
  22.    printf("Book 1 book_id : %d\n", Book1.book_id);
  23.    return 0;
  24. }
复制代码




上一篇:c语言内存分配问题
下一篇:求助此题
41_avatar_middle
最佳答案
1 
在线会员 发表于 2022-11-2 15:19:44 | 显示全部楼层    本楼为最佳答案   
bestAnswer
本帖最后由 ahn 于 2022-11-2 15:22 编辑

说来有一匹布那么长...
这里的知识点涉及到数组、字符数组、字符串字面量、指针、指向字符串字面量的字符指针、内存模型(栈、常量区)等。
给你个例子,对比着看,定有所获:
  1. #include <stdio.h>

  2. struct Books
  3. {
  4.    char *title;  // 区别:const char *title;
  5.    char *author;
  6.    char *subject;
  7.    int   book_id;
  8. };

  9. int main()
  10. {
  11.    struct Books Book1;  /* 声明 Book1,类型为 Books */

  12.    /* Book1 详述 */
  13.    Book1.title = "C Programming";
  14.    // Book1.title[0] = 'D';  // 错误!为什么?
  15.    Book1.author = "Nuha Ali";
  16.    Book1.subject = "C Programming Tutorial";
  17.    Book1.book_id = 6495407;

  18.    /* 输出 Book1 信息 */
  19.    printf("Book 1 title : %s\n", Book1.title);
  20.    printf("Book 1 author : %s\n", Book1.author);
  21.    printf("Book 1 subject : %s\n", Book1.subject);
  22.    printf("Book 1 book_id : %d\n", Book1.book_id);
  23.    return 0;
  24. }
复制代码

点评

还是不理解,以后再说吧 - -!  发表于 2022-11-2 15:39
42_avatar_middle
最佳答案
0 
在线会员 发表于 2022-11-13 18:53:24 | 显示全部楼层
感谢楼主分享!!!
76_avatar_middle
最佳答案
0 
在线会员 发表于 2022-11-15 09:49:32 | 显示全部楼层
一匹布不太够,得两匹
10_avatar_middle
最佳答案
0 
在线会员 发表于 2022-11-16 02:31:29 来自手机 | 显示全部楼层
厉害了,我的楼主
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-11-28 13:43

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表