初阶 《操作符详解》11. 下标引用、函数调用和结构成员

11. 下标引用、函数调用和结构成员

1. [ ] 下标引用操作符

操作数一个数组名 + 一个索引值

int arr[10];//创建数组
arr[9] = 10;//实用下标引用操作符,[ ]的两个操作数是arr和9arr[7]-->*(arr+7)-->*(7+arr)-->7[arr]
7[arr] = 9;
//编译器不会报错,但是不建议这样写

2. ( ) 函数调用操作符

接受一个或者多个操作数第一个操作数是函数名,剩余的操作数就是传递给函数的参数

#include <stdio.h>
void test1()
{printf("hehe\n");
}
void test2(const char* str)
{printf("%s\n", str);
}
int main()
{test1();            //实用()作为函数调用操作符。test2("hello bit.");//实用()作为函数调用操作符。return 0;
}

在这里插入图片描述

3. 访问一个结构的成员

.   结构体 . 成员名
->   结构体指针->成员名

错误代码(形参是实参的一份临时拷贝)

#include <stdio.h>
#include <string.h>
struct Stu
{char name[20];int age;double score;
};void set_stu(struct Stu ss)
{strcpy(ss.name, "huihui");ss.age = 20;ss.score = 100.0;
}print_stu(struct Stu ss)
{printf("%s %d %lf\n", ss.name, ss.age, ss.score);
}int main()
{struct Stu s = { 0 };set_stu(s);print_stu(s);return 0;
}

在这里插入图片描述
正确代码(传地址)

#include <stdio.h>
#include <string.h>
struct Stu
{char name[20];int age;double score;
};void set_stu(struct Stu* ps)
{//strcpy((*ps).name, "huihui");//(*ps).age = 20;//(*ps).score = 100.0;//或者strcpy(ps->name, "huihui");ps->age = 20;ps->score = 100.0;
}print_stu(struct Stu ss)
{printf("%s %d %lf\n", ss.name, ss.age, ss.score);
}int main()
{struct Stu s = { 0 };set_stu(&s);print_stu(s);return 0;
}

在这里插入图片描述

但是这样写并不节省空间,print _stu函数又会创建一个空间去存放数据,因此可以用指针的方式去访问

#include <stdio.h>
#include <string.h>
struct Stu
{char name[20];int age;double score;
};void set_stu(struct Stu* ps)
{/*strcpy((*ps).name, "huihui");(*ps).age = 20;(*ps).score = 100.0;*///或者strcpy(ps->name, "huihui");ps->age = 20;ps->score = 100.0;
}print_stu(struct Stu* ps)
{printf("%s %d %lf\n", ps->name, ps->age, ps->score);
}int main()
{struct Stu s = { 0 };set_stu(&s);print_stu(&s);return 0;
}

在这里插入图片描述

ps->等价于(*ps).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman忘记密码发邮件,久久收不到怎么办?

根本原因是需要FQ&#xff01;&#xff01;&#xff01; 重置密码的链接&#xff1a; https://identity.getpostman.com/trouble-signing-in 找个平台或者软件&#xff0c;访问这个链接即可完成修改密码后续操作&#xff0c;不用再傻傻等着验证码了。 有需要协助的朋友也可私信…

Python中的GIL锁

全局解释器锁&#xff08;Global Interpreter Lock&#xff0c;简称GIL&#xff09;是CPython&#xff08;Python的默认实现&#xff09;中的一种同步机制&#xff0c;它的目的是为了确保线程在执行Python字节码时的线程安全。GIL的引入主要是因为在CPython中&#xff0c;内存管…

【Nginx】静态资源访问配置

nginx 静态资源访问配置 Nginx 静态资源访问配置 通过该片文章&#xff0c;你能了解图中的内容&#xff1a; 实际问题 Nginx 应该怎么写&#xff0c;才能匹配这个图片资源路径&#xff1f; http://47.120.10.110:7001/public/images/picture.jpg解决方案 你需要配置一个 N…

植物大战僵尸杂交版v2.1最新整合版,附PC端+安卓端+iOS端安装包+修改器+安装教程!

嘿&#xff0c;大家好&#xff0c;我是阿星&#xff0c;今天要跟大家聊聊一款游戏&#xff0c;它不是那种让人眼花缭乱的大制作&#xff0c;也不是那种能让人回味无穷的艺术作品&#xff0c;但它在阿星心里&#xff0c;绝对是神作中的佼佼者。没错&#xff0c;它就是《植物大战…

Ubuntu使用apt安装opengl

记录一下&#xff0c;免得找。 sudo apt-get install libgl1-mesa-dev* sudo apt-get install build-essential sudo apt-get install libgl1-mesa-dev sudo apt-get install libglu1-mesa-dev sudo apt-get install libegl1-mesa-dev sudo apt-get install libglut-dev参考

经验分享,免费商标查询网站

有时候想快速查询商标状况&#xff0c;官方网站比较慢&#xff0c;这里分享一个免费快速的网站。 网址&#xff1a;https://www.sscha.com/ 截图&#xff1a;

如何使用Spring Boot Profiles进行环境配置管理

如何使用Spring Boot Profiles进行环境配置管理 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何利用Spring Boot Profiles来管理不同环境…

深度之眼(二十六)——神经网络基础知识(一)

文章目录 一、前言二、神经网络与多层感知机2.1 人工神经元2.2 人工神经网络2.3 多层感知机2.4 激活函数 一、前言 看了下课程安排&#xff0c;自己还是没安排好&#xff0c;刚刚捋清了一下思路。 基础&#xff1a;python、数理 认识&#xff1a;神经网络基础、opencv基础、py…

sys.stdout.write()方法——标准输出打印

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 Sys.Stdout是sys模块中的标准输出对象&#xff0c;可以实现将数据向屏幕、文件等进行输出。Sys.Stdout通过write 方法实现数据的标准输出。…

JavaScript基础知识 面试题1

数据类型&#xff1a; Number&#xff1a;表示数字&#xff0c;包括整数和浮点数。 String&#xff1a;表示文本数据。 Boolean&#xff1a;表示逻辑值&#xff0c;只有两个值&#xff1a;true和false。 Null&#xff1a;表示空值或者不存在的对象。 Undefined&#xff1a;表示…

RK3588 Android13 TvSetting 中性能浮窗RAM显示bug

前言 电视产品,客户发现在设备偏好设置->高级设置->性能浮窗菜单里显示的 RAM 大小是错误的, 要求改成正确的,并且屏幕密度修改后,这个浮窗显示不全,也需要一起处理。 效果图 TvSetting 部分修改文件清单 bug 原因在于 Formatter.formatFileSize 这个 API,我们…

Spring Boot中使用Swagger生成API文档

Spring Boot中使用Swagger生成API文档 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在现代的软件开发中&#xff0c;良好的API文档是团队协作和开发效率不可或…

如何使用Java中的WebSocket?

如何使用Java中的WebSocket&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何在Java中使用WebSocket技术&#xff0c;实现高效的实…

码题杯:我会修改图

原题链接&#xff1a;码题集OJ-我会修改图​​​​​​ 题目大意&#xff1a;给你一张n个点&#xff08;编号为1∼n&#xff09;&#xff0c;m条边&#xff08;编号为1∼m&#xff09;的无向图&#xff0c;图上每个点都有一个点权&#xff0c;权值分别为a1​,a2​,…,an​&…

华为---VRRP基本配置(一)

10、VRRP 10.1 VRRP基本配置 10.1.1 原理概述 随着Internet的发展&#xff0c;人们对网络可靠性的要求越来越高。对于用户来说&#xff0c;能够时刻与外部网络保持通信非常重要&#xff0c;但内部网络中的所有主机通常只能设置一个网关IP地址&#xff0c;通过该出口网关实现…

CVE-2020-26048(文件上传+SQL注入)

简介 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自定义请求&#xff0c;可以将图像扩展修改为PHP&#xf…

Qt:2.环境搭建

目录 1.搭建需要的三个组件&#xff1a; 2.下载Qt安装包&#xff1a; 3.安装qt&#xff1a; 4.配置环境变量&#xff1a; 1.搭建需要的三个组件&#xff1a; C编译器&#xff08;gcc&#xff0c;cl.exe等&#xff09;Qt的SDK&#xff1a;软件开发工具包&#xff0c;Windows…

QT QML使用RabbitMQ

文章目录 步骤1:安装依赖步骤2:创建C++类处理RabbitMQ通信步骤3:将C++类与QML绑定步骤4:创建QML界面步骤5:配置项目文件总结要在Qt中使用RabbitMQ,并且使用QML作为界面部分,你需要结合Qt的C++和QML模块。以下是一个示例项目,它演示了如何使用C++库 SimpleAmqpClient 来…

更改网页标题(方法2)

如果你想要在多个页面中统一地改变特定页面的标题&#xff0c;而不是在每个页面中单独嵌入JavaScript代码&#xff0c;你可以使用一个外部JavaScript文件&#xff0c;并在需要改变标题的页面上引用这个文件。这样&#xff0c;你就不需要在每个页面上重复相同的代码了。 以下是…

Apache Doris 2.1.4 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.1.4 版本已于 2024 年 6 月 26 日正式发布。在 2.1.4 版本中&#xff0c;我们对数据湖分析场景进行了多项功能体验优化&#xff0c;重点修复了旧版本中异常内存占用的问题&#xff0c;同时提交了若干改进项以及问题修复&#xff…