您身边的网站建设专家
成功案例

【建站服务】梨树淘宝装修/梨树京东店铺设计/梨树拼多多网店装修公司/梨树企业网店开通申请-网店装修设计-域名申请

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


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


梨树淘宝装修/梨树京东店铺设计/梨树拼多多网店装修公司/梨树企业网店开通申请-网店装修设计

网站建设.png

数组一样,对结构体数组可以初始化如:

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[] = {{...},{...},{...}};

即先声明结构体类型,然后定义数组为该结构体类型,在定义数组时初始化。

从以上可以看到,结构体数组初始化的一般形式是在定义数组的后面加上:

5.3 结构体数组应用举例

下面例子说明结构体数组的定义和引用。

实例

#include <stdio.h>#include <string.h>#include <stdlib.h> struct person{    char name[20];    int count; }leader[3] = {{"Li", 0},             {"Zhang", 0},             {"Fun", 0}}; void main(){    int i, j;    char leader_name[20];    for(i = 1; i<= 10;i++)    {        scanf("%s", leader_name);        for(j=0;j<3;j++)            if(strcmp(leader_name, leader[j].name) == 0)                leader[j].count ++;    }    printf("n");    for(i=0;i<3;i++)        printf("%5s: %dn", leader[i].name, leader[i].count);    system("pause");}

运行结果如下:


    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(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站