日期: 2022-09-21 04:27:10 浏览数:4

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
梨树淘宝装修/梨树京东店铺设计/梨树拼多多网店装修公司/梨树企业网店开通申请-网店装修设计

数组一样,对结构体数组可以初始化如:
struct student{
int mum;
char name[20];
char sex;
int age;
float score;
char addr[30];}stu[3] = {{10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"},
{10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"},
{10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"}};定义数组 stu 时,元素个数可以不指定,即写成以下形式:
stu[] = {{...},{...},{...}};编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。
当然,数组的初始化也可以用以下形式:
struct student{
int num;
...};struct student stu[] = {{...},{...},{...}};即先声明结构体类型,然后定义数组为该结构体类型,在定义数组时初始化。
从以上可以看到,结构体数组初始化的一般形式是在定义数组的后面加上:
下面例子说明结构体数组的定义和引用。
运行结果如下:
leader[j].count ++;
}
printf(" ");
for(i=0;i<3;i++)
printf("%5s: %d ", leader[i].name, leader[i].count);
system("pause");
}
运行结果如下:
LI
Li
Fun
Zhang
Zhang
Fun
Li
Fun
Zhang
Li
Li: 3
Zhang: 3
Fun: 3
6、指向结构体类型数据的指针
一个结构体变量的指针就是该变量所占据的内存段的起始地址,可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。
6.1 指向结构体变量的指针
指向结构体变量的指针的应用:
实例
#include <string.h>
#include <stdio.h>
#include <stdlib.b>
struct student
{
long num;
char name[20];
char sex;
float score;
};
void main()
{
struct student stu_1;
struct student *p;
p = &stu_1;
stu_1.num = 89101;
strcpy(stu_1.name, "Li Lin");
stu_1.sex = 'M';
stu_1.score = 89.5;
printf("NO. :%ld name: %s sex:%c score:%f ", stu_1.num, stu_1.name, stu_1.sex, stu_1.score);
printf("NO. :%ld name: %s sex:%c score:%f ", (*p).num, (*p).name, (*p).sex, (*p).score);
system("pause");
}
在主函数中声明了 struct student 类型,然后定义了一个 struct student 类型的变量,stu_1 同时又定义一个指针变量 p ,它指向一个 struct student 类型的数据,在函数的执行部分将结构体变量 stu_1 的起始地址赋给指针变量 p ,也就是使 p 指向 stu_1 然后对 stu_1 的各成员赋值,第二个 printf 函数也是用来输出 stu_1 各成员的值,但使用的是 (*p).num 这样的形式, (*p) 表示 p 指向的结构体变量,(*p).num 是 p 指向的结构体变量中的成员 num 。注意 *p 两侧的括弧不可省略,因为成员运算符 '.' 优先于 '*' 运算符,*p.num 就等价于 *(p.num)
运行结果如下:
NO. :89101
name: Li Lin
sex:M
score:89.500000
NO. :89101
name: Li Lin
sex:M
score:89.500000
可以看到两个 printf 输出的结果相同。
在C语言中,为了使用方便和使之直观,可以把 (*p).num 改用 p->num 来代替,它表示 *p 所指向的结构体变量中的 num 成员,同样,(*p).name 等价于 p->name。
也就是说以下三种形式等价:
a. 结构体变量.成员名
b. (*p).成员名
c. p-> 成员名
上面的最后一个 printf 函数输了项可以改写为:
printf("NO. :%ld name: %s sex:%c score:%f ",p->num, p->name, p-
梨树淘宝装修/梨树京东店铺设计/梨树拼多多网店装修公司/梨树企业网店开通申请-网店装修设计
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)