C语言中的成员访问:普通变量与指针变量的区别与使用

news/2024/5/20 2:24:42 标签: mcu, autosar, BSW, mcal, c语言

C语言中的成员访问

在C语言中,我们可以通过变量来访问它们的成员。根据变量的类型,我们使用不同的成员访问符:.->。本文将详细介绍这两个成员访问符的使用。

目录

  1. 普通变量的成员访问
  2. 指针变量的成员访问
  3. 示例代码
  4. 总结

普通变量的成员访问

在C语言中,我们可以定义一个结构体来表示一个对象或者一组数据。结构体中的成员可以是不同的数据类型,比如整数、浮点数、字符数组等。当我们创建一个结构体变量后,可以通过.来访问它的成员。

struct Person 
{
    char name[20];
    int age;
    double score;
};

int main() 
{
    struct Person p;

    strcpy(p.name, "Alice");
    p.age = 25;
    p.score = 95.5;

    printf("Name: %s\n", p.name);
    printf("Age: %d\n", p.age);
    printf("Score: %lf\n", p.score);

    return 0;
}

上述示例中,我们定义了一个名为Person的结构体,包含了三个成员:nameagescore。在main函数中,我们创建了一个Person类型的变量p,并通过strcpy和赋值来设置其成员的值。然后,我们通过.来访问p的各个成员,并使用printf将它们打印出来。

指针变量的成员访问

除了使用.来访问结构体变量的成员,我们还可以使用指针变量来访问结构体的成员。当我们声明一个指向结构体的指针变量后,需要使用->来访问结构体的成员。

struct Person 
{
    char name[20];
    int age;
    double score;
};

int main() 
{
    struct Person p;
    struct Person* pp;

    pp = &p;
    strcpy(pp->name, "Bob");
    pp->age = 30;
    pp->score = 85.5;

    printf("Name: %s\n", pp->name);
    printf("Age: %d\n", pp->age);
    printf("Score: %lf\n", pp->score);

    return 0;
}

在上面的示例中,我们首先定义了一个指向Person类型的指针变量pp。然后,将pp指向p,并使用strcpy和赋值来设置p的成员的值。通过->,我们可以访问pp所指向的结构体的各个成员,并使用printf将它们打印出来。

示例代码

你可以在以下链接中找到本文中使用的示例代码:C语言成员访问示例代码

总结

在C语言中,我们可以使用.来访问普通变量的成员,使用->来访问指针变量所指向的结构体的成员。这两种成员访问方式使得我们可以方便地操作结构体的数据。在编写程序时,我们可以根据实际需求选择合适的成员访问符。


http://www.niftyadmin.cn/n/5255852.html

相关文章

request.setAttribute()的用法详解

request.setAttribute()的用法详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入研究Java Web开发中一个重要的方法——request.setAt…

数字图像处理(实践篇)二十二 使用opencv进行人脸、眼睛、嘴的检测

目录 1 xml文件 2 涉及的函数 3 实践 使用opencv进行人脸、眼睛、嘴的检测。 1 xml文件 方法① 下载 地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_default.xml文件 对着Raw右键,选择“链接…

ONLYOFFICE协作空间2.0:文档协作更便捷

〇、前言 大家好我是陈橘又青,在之前的文章中,我向大家介绍了ONLYOFFICE:免费、开源、跨平台的办公神器,想必大家都已经了解到了ONLYOFFICE在企业办公、文档处理工作中的方便快捷。ONLYOFFICE 2.0版本也已于近日更新。 今天就来跟…

Go map 大小

如何得到一个 map 占用了多少内存 go get github.com/520MianXiangDuiXiang520/MapSizepackage mainimport ("fmt""github.com/520MianXiangDuiXiang520/MapSize" )func main() {m : make(map[int]struct{})for i : 0; i < 100; i {m[i] struct{}{}}f…

【UML】NO.1 UML简介

目录 一、什么是UML 二、UML和软件工程 三、UML的诞生 四、UML的基本构成 从今天开始&#xff0c;开一个新的话题&#xff0c;把UML梳理一遍。 一、什么是UML UML&#xff08;Unified Modeling Language,UML&#xff09;是一个通用的可视化建模语言标准&#xff0c;用于对…

[渗透测试学习] CozyHosting - HackTheBox

文章目录 信息搜集 信息搜集 nmap扫描一下&#xff0c;发现存在80端口和22端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.230直接访问80端口发现有跳转 那么我们将ip添加到hosts里面&#xff0c;成功访问 观察发现是企业网站&#xff0c;扫描一下没有子域名 那么就扫…

pip 通过git安装库

举例&#xff1a;安装peft库 git clone https://github.com/huggingface/peft.git cd peft python -m pip install . 解释&#xff1a; 使用git clone克隆PEFT库的代码。进入克隆的目录。使用python -m pip install .来安装PEFT库。 补充&#xff1a;使用pip安装到指定编译器…

ARM:作业2

1.复习串口实验的流程&#xff0c;熟练编写代码 2.串口发送指令控制硬件工作 a b c d led1_on led1_off 代码: main.c #include "uartt.h"//封装延时函数void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){all_led_init1();//1.…