C语言结构体:定义与成员引用

需积分: 14 0 下载量 23 浏览量 更新于2024-07-14 收藏 705KB PPT 举报
"C语言结构体相关知识" 在C语言中,结构体(struct)是一种复合数据类型,允许我们将不同类型的数据组合在一起,形成一个新的数据类型。结构体定义了如何存储和组织多个不同数据类型的数据,这对于表示复杂的数据结构非常有用。 在给出的定义语句中: ```c struct friend{ char name[5]; unsigned long tel; }; struct friend tel_book[100]; ``` 这里定义了一个名为`friend`的结构体类型,它包含两个成员:一个长度为5的字符数组`name`用于存储姓名,以及一个无符号长整型`tel`用于存储电话号码。然后,我们声明了一个大小为100的`friend`结构体数组`tel_book`,这可以用来存储100个朋友的信息。 描述中的四个选项是针对结构体成员的访问和赋值操作: A、`tel_book[0].name="Mary";` 这个选项不正确,因为结构体成员`name`是一个字符数组,不能直接用字符串常量进行赋值。应该使用`strcpy()`函数来复制字符串。 B、`(tel_book+10)->tel=123456L;` 这个选项是正确的,它通过指针访问结构体成员。`(tel_book+10)`表示数组中的第11个元素(在C语言中,数组索引从0开始),然后`.`操作符访问其`tel`成员并赋值。 C、`tel_book[0].name[0]="p";` 这个选项错误,`name[0]`是一个字符,不能赋值为字符串。可以只赋值单个字符,例如`tel_book[0].name[0]='p';`。 D、`tel_book[10]->tel=123456L;` 这个选项也正确,与选项B类似,它访问数组中的第11个元素的`tel`成员并赋值。 结构体类型和变量的区别在于,类型定义时不分配内存,而变量定义时会分配内存。结构体变量可以被赋值、存取和运算,而类型本身则不行。结构体可以嵌套,即一个结构体的成员可以是另一个结构体类型。结构体变量的引用通常通过`.`或`->`操作符完成,`.`用于直接访问结构体变量的成员,而`->`用于通过指向结构体的指针访问成员。 对于结构体数组,如`tel_book`,可以通过索引来访问每个元素,每个元素都是一个完整的结构体实例,可以分别访问和修改它们的成员。例如,如果我们想要设置第一个朋友的名字为"John"和电话号码为1234567890L,可以这样操作: ```c strcpy(tel_book[0].name, "John"); tel_book[0].tel = 1234567890L; ``` 结构体在C语言中扮演着至关重要的角色,它允许我们创建自定义的数据结构来适应特定问题的需求。理解如何定义、初始化和操作结构体,是C语言编程中必不可少的基础知识。