ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用指针访问成员

2022-07-25 21:04:37  阅读:142  来源: 互联网

标签:成员 fellow 运算符 访问 income guy him 指针


//使用指向结构的指针
#include<stdio.h>
#define LEN 20

struct name
{
char first[LEN];
char last[LEN];
};

struct guy{
    struct name handle;
    char favfood[LEN];
    char job[LEN];
    float income;
};

int main(void)
{
    struct guy fellow[2]={
    {
        {"yitao","cao"},
        "芒果",
        "IT 农民",
        15000.00
    },
        {
            {"yitian","qian"},
            "不知道",
            "老师",
            7000.00


        }
    };
    struct guy *him;  //这是一个指向结构的指针

    printf("address #1 : %p #2: %p \n", &fellow[0], &fellow[1]);
    him = &fellow[0];  //告诉编译器该指针指向何处
    printf("pointer #1: %p #2: %p\n", him, him+1);
    printf("him ->income is $%.2f: (*him).income is $%.2f\n", him -> income,(*him).income);
    him++; //指向下一个结构
    printf("him->favfood is %s: him->handle.last is %s\n",him->favfood, him->handle.last);

    return 0;

}

 

struct guy * him;
指针him可以指向任意现有的guy类型的结构。如果barney是一个guy类型的结构变量可以这么写
him = &barney;和数组不同,结构变量名并不是结构变量的地址,因此要在结构变量名前面加上&运算符。
指针him指向结构变量fellow[0],如何通过him获得fellow[0]的成员的值?
第一种方法:使用->运算符,该符号由一个连接号(-)后跟一个大于号组成。
如果him == &barney,那么him->income即是barney.income
换句话说指向结构的指针后面的->运算符和结构变量名后面的 .运算符工作方式相同。
这里要着重理解him是一个指针,但是him->income是该指针所指向结构的一个成员。l

第2种方法是,以这样的顺序指定结构成员的值:如果him==&fellow[0],那么*him==fellow[0],因为&和*是一对互逆运算符。因此可以做以下替代
fellow[0].income ==(*him).income
必须使用圆括号因为 .运算符比*运算符的优先级高。
总之,如果him是指向guy类型结构barney的指针,那么下面关系恒成立:
barney.income==(*him).income ==him->income//假设him== &barney

标签:成员,fellow,运算符,访问,income,guy,him,指针
来源: https://www.cnblogs.com/cyTtttt/p/16518836.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有