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

【建站服务】梨树做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式-域名申请

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


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


梨树做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式

网站建设.png

   leader[j].count ++;    }    printf("n");    for(i=0;i<3;i++)        printf("%5s: %dn", leader[i].name, leader[i].count);    system("pause");}

运行结果如下:

LILiFunZhangZhangFunLiFunZhangLi

   Li: 3Zhang: 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. :%ldnname: %snsex:%cnscore:%fn", stu_1.num, stu_1.name, stu_1.sex, stu_1.score);    printf("NO. :%ldnname: %snsex:%cnscore:%fn", (*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. :89101name: Li Linsex:M
score:89.500000NO. :89101name: Li Linsex:M
score:89.500000

可以看到两个 printf 输出的结果相同。

在C语言中,为了使用方便和使之直观,可以把 (*p).num 改用 p->num 来代替,它表示 *p 所指向的结构体变量中的 num 成员,同样,(*p).name 等价于 p->name。

也就是说以下三种形式等价:

上面的最后一个 printf 函数输了项可以改写为:

printf("NO. :%ld
name: %s
sex:%c
score:%f
",p->num, p->name, p-


上面的最后一个 printf 函数输了项可以改写为:


printf("NO. :%ld name: %s sex:%c score:%f ",p->num, p->name, p->sex, p->score);

其中 -> 称为指向运算符。


分析以下几种运算符:


p -> n 得到 p 指向的结构体变量中的成员 n 的值

p -> n ++ 得到 p 指向的结构体变量中的成员 n 的值,用完值后使它加 1

++p -> n 得到 p 指向的结构体变量中的成员 n 的值使之加 1 (先加)

6.2 指向结构体数组的指针

以前介绍过可以使用指向数组或数组元素的指针和指针变量,同样,对结构体数组及其元素也可以用指针变量来指向。


指向结构体数组的指针的应用。


实例

#include <stdio.h>

#inlcude <stdlib.h>

 

struct student

{

    int num;

    char name[20];

    char sex;

    int age;

};

 

struct student stu[3] = {{10101, "Li Lin", 'M', 18},

                         {10102, "Zhang Fun", 'M', 19},

                         {10103, "Wang Min", 'F', 20}};

 

int main()

{

    struct student *p;

    printf("No.    name        sex        age ");

    for(p=stu; p<stu+3;p++)

        printf("%5d %-20s %2c %4d ", p->num, p->name, p->sex, p->age);

    system("pause");

}

运行结果如下:


No.    name        sex        age

10101 Li Lin                M       18

10102 Zhang Fun        M       19

10103 Wang Min          F        20

注意以下两点:


1)如果 p 的初值为 stu,即指向第一个元素,则 p + 1 后指向下一个元素的起始地址。例如:


(++p) -> num 先使 p 自加 1 ,然后得到它指向的元素中的 num 成员的值(即10102)。


(p++) ->num 先得到 p->num 的值(即10101),然后使 p 自加 1 ,指向 stu[1]。


注意以上二者的不同。


(2)程序已定义了指针 p 为指向 struct student 类型数据的变量,它只能指向一个 struct student 型的数据(p 的值是 stu 数组的一个元素的起始地址),而不能指向 stu 数组元素中的某一成员,(即 p 的地


梨树做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


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

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

Copyright © 2021 通陆科技

网站建设上往建站