|
- #include <stdio.h>
- #include <string.h>
-
- struct Books
- {
- char title[50];
- char author[50];
- char subject[100];
- int book_id;
- };
-
- int main( )
- {
- struct Books Book1; /* 声明 Book1,类型为 Books */
- struct Books Book2; /* 声明 Book2,类型为 Books */
-
- /* Book1 详述 */
- strcpy( Book1.title, "C Programming");
- strcpy( Book1.author, "Nuha Ali");
- strcpy( Book1.subject, "C Programming Tutorial");
- Book1.book_id = 6495407;
-
- /* Book2 详述 */
- strcpy( Book2.title, "Telecom Billing");
- strcpy( Book2.author, "Zara Ali");
- strcpy( Book2.subject, "Telecom Billing Tutorial");
- Book2.book_id = 6495700;
-
- /* 输出 Book1 信息 */
- printf( "Book 1 title : %s\n", Book1.title);
- printf( "Book 1 author : %s\n", Book1.author);
- printf( "Book 1 subject : %s\n", Book1.subject);
- printf( "Book 1 book_id : %d\n", Book1.book_id);
-
- /* 输出 Book2 信息 */
- printf( "Book 2 title : %s\n", Book2.title);
- printf( "Book 2 author : %s\n", Book2.author);
- printf( "Book 2 subject : %s\n", Book2.subject);
- printf( "Book 2 book_id : %d\n", Book2.book_id);
-
- return 0;
- }
复制代码
strcpy( Book1.title, "C Programming"); 不理解这句为什么采用这样的方式来赋值,而不是直接Book1.title="C Programming"?我试过采用这种方式赋值会报错。
本帖最后由 ahn 于 2022-11-2 15:22 编辑
说来有一匹布那么长...
这里的知识点涉及到数组、字符数组、字符串字面量、指针、指向字符串字面量的字符指针、内存模型(栈、常量区)等。
给你个例子,对比着看,定有所获:
- #include <stdio.h>
- struct Books
- {
- char *title; // 区别:const char *title;
- char *author;
- char *subject;
- int book_id;
- };
- int main()
- {
- struct Books Book1; /* 声明 Book1,类型为 Books */
- /* Book1 详述 */
- Book1.title = "C Programming";
- // Book1.title[0] = 'D'; // 错误!为什么?
- Book1.author = "Nuha Ali";
- Book1.subject = "C Programming Tutorial";
- Book1.book_id = 6495407;
- /* 输出 Book1 信息 */
- printf("Book 1 title : %s\n", Book1.title);
- printf("Book 1 author : %s\n", Book1.author);
- printf("Book 1 subject : %s\n", Book1.subject);
- printf("Book 1 book_id : %d\n", Book1.book_id);
- return 0;
- }
复制代码
|
上一篇: c语言内存分配问题下一篇: 求助此题
|