当前位置: 首页 > news >正文

7.3 调用函数

前言: 

思维导图:

 7.3.1 函数调用的形式

我的笔记:

函数调用的形式
在C语言中,调用函数是一种常见的操作,主要有以下几种调用方式:

1. 函数调用语句
此时,函数调用独立存在,作为一个完整的语句。例如:

print_star();


在这种情况下,函数不需要返回值,只需完成某些操作。调用语句的末尾需要加分号。

2. 函数表达式
函数调用作为另一个表达式的一部分,例如:

c = max(a, b);


此处,`max(a, b)` 是一个函数调用,存在于赋值表达式中。在这种情况下,函数需要返回一个确定的值,以参与表达式的其他运算。例如:

c = 2 * max(a, b);

3. 函数参数
函数调用可以作为另一个函数调用的实参。例如:

m = max(a, max(b, c));


在这个例子中,`max(b, c)` 是一次函数调用,它的返回值作为第二次 `max` 函数调用的实参。

另外,函数调用可以作为其他函数,如 `printf`,的参数。例如:

printf("%d", max(a, b));

注意事项
- 调用无参函数时,括号不能省略,如 `print_star()`。
- 如果函数调用语句,末尾需要加分号;而作为表达式或参数时,不应加分号。
- 如果实参表列有多个实参,各参数间应用逗号隔开。

示例

//调用无参函数
print_star();//调用有参函数
c = max(a, b);
m = max(a, max(b, c));
printf("%d", max(a, b));

错误示范

printf("%d", max(a, b););
//这里max(a,b)后面多了一个分号,这是不正确的。

 7.3.2 函数调用时的数据传递

我的笔记:

1. 形式参数和实际参数
- **形式参数(形参)**:定义函数时,函数名后的括号中的变量。
- **实际参数(实参)**:调用函数时,函数名后的括号中的参数。

实际参数可以是常量、变量或表达式。

int max(int x, int y)
{int z;z = x > y ? x : y;return(z);
}

2. 实参和形参间的数据传递
- 实参的值会传递给形参。
- 形参获取实参的值,该值在函数调用期间有效。
- 实参与形参间的数据传递称为“虚实结合”。

示例

#include <stdio.h>int main() 
{int a, b, c;printf("please enter two integer numbers:");scanf("%d,%d", &a, &b);c = max(a, b);printf("max is %d\n", c);return 0;
}

在这个例子中,`a` 和 `b` 是实参,而 `x` 和 `y` 是形参。实参 `a` 和 `b` 的值会传递给形参 `x` 和 `y`。

注意事项
1. 实参可以是常量、变量或表达式,例如:`max(3, a+b)`。实参与形参的类型应该相同或赋值兼容。
2. 如果实参和形参类型不同,会进行类型转换。例如,如果实参是 `float` 类型,值为 `3.5`,而形参是 `int` 类型,则实参会转换为 `int` 类型,即 `3`,再传递给形参。

程序分析
1. 在定义 `max` 函数时,指定了两个 `int` 类型的形参 `x` 和 `y`。
2. 主函数中通过 `max(a, b)` 调用了 `max` 函数,其中 `a` 和 `b` 作为实参传递给了形参 `x` 和 `y`。
3. 在 `max` 函数中,将较大的值赋给变量 `z`,并作为函数值返回给主函数,赋给变量 `c`。

总结
在函数调用过程中,实参的值会传递给形参,允许在被调用函数中使用实参的值进行运算。实参和形参应当类型相同或兼容,不同类型间会进行必要的类型转换。

 

 7.3.3 函数调用的过程

 我的笔记:

1. 形参的内存分配
- 在没有函数调用发生时,定义在函数中的形参不占内存中的存储单元。
- 函数被调用时,形参才会被临时分配内存单元。

2. 实参值的传递
- 函数调用时,实参的值会被传递给对应的形参。
- 如,如果实参的值为2,那么这个值会被传递给形参x,此时,形参x的值就会变成2。

3. 形参的运算
- 形参在函数调用期间会持有值,因此我们可以利用这些形参进行相关的运算。

4. 返回值
- 通过 `return` 语句,函数值会被带回到主调函数。
- 返回值的类型应该与函数的类型一致。
- 如果函数不需要返回值,则不需要 `return` 语句,并且函数的类型应定义为 `void` 类型。

5. 调用结束后的处理
- 函数调用结束后,形参单元会被释放。
- 实参单元会被保留,并且保持原值不变。
- 如果在被调用函数的执行过程中形参的值发生了改变,这不会影响到主调函数中的实参的值。

6. 值传递
- 实参向形参的数据传递是“值传递”,是单向传递。
- 实参和形参在内存中占有不同的存储单元。
- 由于实参和形参位于不同的存储单元,实参无法获取形参的值。

总结
函数调用的过程中涉及到形参的内存分配、实参值的传递、形参的运算以及返回值的处理等多个环节。实参和形参间的数据传递是通过值传递的方式进行,即实参的值会被复制给形参,但实参和形参是独立的存储单元,它们之间的值是独立的,改变形参的值不会影响实参的值。

我的理解:

函数调用过程可以被比喻为一场精心组织的演出。在这场演出中,形参可以看作是演员,实参是演员所扮演的角色,而函数体则是演员们所要遵循的剧本。

### 1. **形参的内存分配**
   - **比喻:** 形参像是演员在剧本中的角色名称,尚未被具体的演员扮演时,它还不具有实体。
   - **解释:** 当函数被调用时,形参才会被赋予实体,即在内存中分配具体的存储单元。

### 2. **实参值的传递**
   - **比喻:** 实参是具体的演员,他们根据剧本(函数体)中角色的要求,扮演各自的角色。
   - **解释:** 在函数调用时,实参的值会被传递给形参,形参得到具体的值,以便后续的计算和操作。

### 3. **形参的运算**
   - **比喻:** 形参在演出中根据剧本的指示进行演绎,发挥着各自的角色。
   - **解释:** 形参在函数体内进行各种运算,完成函数体内定义的任务。

### 4. **返回值**
   - **比喻:** 演出完毕后,观众(主调函数)会得到一个总体的表演效果(返回值)。
   - **解释:** 函数执行完毕后,通过 `return` 语句返回一个值给主调函数。这个值应该与函数声明时的类型一致。

### 5. **调用结束后的处理**
   - **比喻:** 演出完毕后,演员退出舞台,他们扮演的角色也随之消失。
   - **解释:** 函数调用结束后,形参所占用的内存单元被释放。但是,实参依然保留其值。

### 6. **值传递**
   - **比喻:** 演员扮演角色时,他们不会改变角色原有的性格和设定,角色的设定是固定的。
   - **解释:** 实参的值会被复制给形参,但是形参和实参是两个不同的存储单元,改变形参的值不会影响到实参的值。

### 严谨科学的总结:
函数调用过程中,形参在开始时并没有内存分配,只有在函数调用时才会在内存中占有存储单元。实参的值会被复制给形参,进行函数内部的运算。运算完成后,通过 `return` 语句将结果返回给主调函数。这个过程是一种“值传递”的过程,形参和实参在内存中位于不同的存储单元,它们之间是独立的,形参的变化不会影响实参。

 7.3.4 函数的返回值(这里曾经考察过)

 我的笔记:

简述:
函数的返回值是通过`return`语句在函数中获得的。此值会带回到主调函数中。有时,返回值的类型可以自动进行类型转换,但最佳实践是让函数类型与 `return` 返回值的类型一致。

#### 笔记:

1. **返回值获取**:
   - 函数的返回值通过`return`语句在被调用函数中获得,并传递回主调函数。
   - `return`语句后的值可以是一个表达式,比如:`return(x > y ? x : y);`。

2. **返回值用途**:
   - 函数的返回值用于在主调函数中得到一个确定的值,如 `c = max(a, b);`。
   - 函数 `max(2,3)` 的返回值是 `3`,而 `max(5,3)` 的返回值是 `5`。

3. **返回值类型**:
   - 函数返回值应有明确的类型,并在定义函数时指定,如 `int max(float x, float y)`。
   - 如果 `return` 语句中的表达式类型与函数类型不一致,会按照函数类型进行转换。但最佳实践是保持一致。

4. **类型转换和清晰度**:
   - 即便可以利用类型转换在一些情况下得到不同类型的返回值,但这会降低程序的清晰度和可读性。
   - 建议初学者使函数类型与 `return` 返回值的类型保持一致。

5. **void 类型**:
   - 对于不需要返回值的函数,应定义为 `void` 类型,这会使系统确保函数不会带回任何值。
   - 在 `void` 类型的函数中,不应该出现 `return` 语句。

6. **例子分析**:
   - 当函数定义为 `int` 型,而 `return` 语句中的变量为 `float` 型时,将按赋值规则处理,先将变量的值转换为 `int` 型。
   - 例:在 max 函数中,如果变量 `z` 为 `float` 型,其值为 `2.6`,那么返回给主调函数的值将是 `2`。

7. **规范性和维护性**:
   - 应养成在定义函数时一律指定函数类型的习惯,这样的程序规范、易读、易于检查维护。

#### 举例代码:

#include <stdio.h>
int main() {int max(float x, float y);float a, b;int c;scanf("%f,%f,", &a, &b);c = max(a, b);printf("max is %d\n", c);return 0;
}int max(float x, float y) {float z;z = x > y ? x : y;return(z);
}

在这个例子中,`max` 函数比较两个 `float` 类型的值,并返回较大的一个。由于函数返回类型为 `int`,所以 `float` 类型的 `z` 在返回时会转换为 `int` 类型。

 

 

 

总结:


在学习函数调用时,要特别注意函数的定义、声明、参数传递和返回值。理解这些概念,并通过大量的实践来巩固这些知识,可以避免许多常见的错误,并且是学习更复杂编程概念的基础。同时,要特别注意类型的一致性和变量的作用域,确保在编写程序时不会出现相关的错误。

调用函数 - 重点、难度与易错点

#### 重点:
1. **函数定义与声明**:
   函数的定义包含了具体的实现,而声明通常出现在头文件中,通知编译器函数的存在。

2. **参数传递**:
   理解参数是如何传递的,包括值传递和引用传递,这是实现更复杂逻辑时的基础。

3. **返回值**:
   函数可以返回一个值,通过 `return` 语句来实现。必须清楚函数的返回类型,并使 `return` 语句与之匹配。

4. **作用域**:
   理解变量的作用域,局部变量与全局变量的区别和使用场景。

5. **调用过程**:
   了解函数被调用时的执行流程,以及调用者和被调用者之间是如何交互的。

#### 难度:
1. **参数传递理解**:
   新手可能会对值传递和引用传递感到困惑,不清楚变量在函数间是如何传递和修改的。

2. **递归调用**:
   如果本节包含递归调用,那么理解递归调用的执行过程和调用栈可能会有些难度。

3. **类型一致性**:
   保持函数定义类型、`return` 语句和调用处类型的一致性,可能需要一些时间来掌握。

#### 易错点:
1. **类型不一致**:
   函数的返回值类型与 `return` 语句不匹配,或与接收返回值的变量类型不匹配,是一个常见的错误。

2. **遗漏返回值**:
   忘记在需要返回值的函数中加 `return` 语句,或在 `void` 类型的函数中加了 `return` 语句。

3. **参数传递错误**:
   错误地使用值传递或引用传递,导致函数内外的变量未按预期改变。

4. **作用域混淆**:
   对全局变量和局部变量的作用域不清晰,可能导致变量的错误使用。

5. **递归终止条件缺失**:
   如果涉及递归,缺少或错误的递归终止条件会导致程序运行错误

相关文章:

7.3 调用函数

前言&#xff1a; 思维导图&#xff1a; 7.3.1 函数调用的形式 我的笔记&#xff1a; 函数调用的形式 在C语言中&#xff0c;调用函数是一种常见的操作&#xff0c;主要有以下几种调用方式&#xff1a; 1. 函数调用语句 此时&#xff0c;函数调用独立存在&#xff0c;作为…...

如果使用pprof来进行性能的观测和优化

1. 分析性能瓶颈 在开始优化之前&#xff0c;首先需要确定你的程序的性能瓶颈在哪里。使用性能分析工具&#xff08;例如 Go 的内置 pprof 包&#xff09;来检测程序中消耗时间和内存的地方。这可以帮助你确定需要优化的具体部分。 2. 选择适当的数据结构和算法 选择正确的数…...

在移动固态硬盘上安装Ubuntu系统和ROS2

目录 原视频准备烧录 原视频 b站鱼香ros 准备 1.在某宝上买一个usb移动固态硬盘或固态U盘&#xff0c;至少64G 2.下载鱼香ros烧录工具 下载第二个就行了&#xff0c;不然某网盘的速度下载全部要一天 下载后&#xff0c;选择FishROS2OS制作工具压缩包&#xff0c;进行解压…...

【iptables 实战】02 iptables常用命令

一、iptables中基本的命令参数 -P 设置默认策略-F 清空规则链-L 查看规则链-A 在规则链的末尾加入新规则-I num 在规则链的头部加入新规则-D num 删除某一条规则-s 匹配来源地址IP/MASK&#xff0c;加叹号“&#xff01;”表示除这个IP外-d 匹配目标地址-i 网卡名称 匹配从这块…...

webview_flutter

查看webview内核 ​https://liulanmi.com/labs/core.html​ h5中获取设备 https://cloud.tencent.com/developer/ask/sof/105938013 https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/mediaDevices web资源部署后navigator获取不到mediaDevices实例的解决方案&…...

【GESP考级C++】1级样题 闰年统计

GSEP 1级样题 闰年统计 题目描述 小明刚刚学习了如何判断平年和闰年&#xff0c;他想知道两个年份之间&#xff08;包含起始年份和终止年份&#xff09;有几个闰年。你能帮帮他吗&#xff1f; 输入格式 输入一行&#xff0c;包含两个整数&#xff0c;分别表示起始年份和终止…...

CentOS密码重置

背景&#xff1a; 我有一个CentOS虚拟机&#xff0c;但是密码忘记了&#xff0c;偶尔记起可以重置密码&#xff0c;于是今天尝试记录一下&#xff0c;又因为我最近记性比较差&#xff0c;所以必须要记录一下。 过程&#xff1a; 1、在引导菜单界面&#xff08;grub&#xff…...

Tomcat Servlet

Tomcat & Servlet 一、What is “Tomcat”?二、 What is “Servlet”?1、HttpServlet2、HttpServletRequest3、HttpServletResponse 一、What is “Tomcat”? Tomcat 本质上是一个基于 TCP 协议的 HTTP 服务器。我们知道HTTP是一种应用层协议&#xff0c;是 HTTP 客户端…...

国庆day2---select实现服务器并发

select.c&#xff1a; #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__:",__LINE__);\perror(msg);\ }while(0)#define IP "192.168.1.3" #define PORT 8888int main(int argc, const char *argv[]) {//创建报式套接字socketi…...

Grafana 开源了一款 eBPF 采集器 Beyla

eBPF 的发展如火如荼&#xff0c;在可观测性领域大放异彩&#xff0c;Grafana 近期也发布了一款 eBPF 采集器&#xff0c;可以采集服务的 RED 指标&#xff0c;本文做一个尝鲜介绍&#xff0c;让读者有个大概了解。 eBPF 基础介绍可以参考我之前的文章《eBPF Hello world》。理…...

亲测可用国产GPT人工智能

分享一些靠谱、可用、可以白嫖的GPT大模型。配合大模型&#xff0c;工作效率都会极大提升。 清华大学ChatGLM 官网&#xff1a; 智谱清言中国版对话语言模型&#xff0c;与GLM大模型进行对话。https://chatglm.cn/开源的、支持中英双语的1300亿参数的对话语言模型&#xff0…...

适配器模式详解和实现(设计模式 四)

适配器模式将一个类的接口转换成客户端所期望的另一个接口&#xff0c;解决由于接口不兼容而无法进行合作的问题。 设计基本步骤 1. 创建目标接口&#xff08;Target Interface&#xff09;&#xff0c;该接口定义了客户端所期望的方法。 2.创建被适配类&#xff08;Adaptee…...

IDEA的使用

文章目录 1.IDEA配置1.1 idea界面说明1.2 git1.3 JDK1.4 maven1.5 Tomcat1.6 idea设置编码格式1.7 vscodenodejs1.8 windows下安装redis 2. IDEA问题2.1 setAttribute方法爆红2.2 idea cannot download sources解决办法2.3 springboot项目跑起来不停run 3. vscode3.1 vscode显示…...

CSS详细基础(二)文本样式

插播一条CSS的工作原理&#xff1a; CSS是一种定义样式结构如字体、颜色、位置等的语言&#xff0c;被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式&#xff0c;样式单包含将样式应用到指定类型的元素的规则。…...

win10系统任务栏图标变成白色的解决办法

我平时都是用滴答清单进行管理这个自己的日程代办的&#xff0c;但是今天打开的时候发现这个快捷方式突然变成纯白色的了&#xff0c;重启电脑之后&#xff0c;这个图标的样式仍然没有变化。上网查找解决办法之后&#xff0c;终于搞好了&#xff0c;于是就有了下面的教程。 为什…...

hadoop生态现状、介绍、部署

一、引出hadoop 1、hadoop的高薪现状 各招聘平台都有许多hadoop高薪职位&#xff0c;可以看看职位所需求的技能 ----> hadoop是什么&#xff0c;为什么会这么高薪&#xff1f;引出大数据&#xff0c;大数据时代&#xff0c;大数据与云计算 2、大数据时代的介绍 大数据的故事…...

二、EFCore 数据库表的创建和迁移

文章目录 一、数据库连接二、数据库表迁移一、数据库连接 在NuGet上安装EntityFramework 代码如下: Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.Extensions.Configuration.Json配置数据连接 appsettings.json 增加数据库连接配置 &quo…...

在nodejs中使用typescript

在nodejs中使用typescript 如果我们正在使用nodejs来开发应用&#xff0c;那么对于管理和扩展一个大型代码库来说是一个非常大的挑战。克服这一问题的方法之一是使用typescript&#xff0c;为js添加可选的类型注释和高级功能。在本文中,我们将探讨如何使用在nodejs中使用types…...

数据结构与算法基础(青岛大学-王卓)(8)

哎呀呀&#xff0c;sorry艾瑞波地&#xff0c;这次真的断更一个月了&#xff0c;又发生了很多很多事情&#xff0c;秋风开始瑟瑟了&#xff0c;老父亲身体查出肿瘤了&#xff0c;有病请及时就医&#xff0c;愿每一个人都有一个健康的身体&#xff0c;God bless U and FAMILY. 直…...

【生物信息学】使用谱聚类(Spectral Clustering)算法进行聚类分析

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 3. IDE 三、实验内容 0. 导入必要的工具 1. 生成测试数据 2. 绘制初始数据分布图 3. 循环尝试不同的参数组合并计算聚类效果 4. 输出最佳参数组合 5. 绘制最佳聚类结果图 6. 代码整合 一、实验介绍…...

CSS基础语法第二天

目录 一、复合选择器 1.1 后代选择器 1.2 子代选择器 1.3 并集选择器 1.4 交集选择器 1.4.1超链接伪类 二、CSS特性 2.1 继承性 2.2 层叠性 2.3 优先级 基础选择器 复合选择器-叠加 三、Emmet 写法 3.1HTML标签 3.2CSS 四、背景属性 4.1 背景图 4.2 平铺方式 …...

ThreeJS - 封装一个GLB模型展示组件(TypeScript)

一、引言 最近基于Three.JS&#xff0c;使用class封装了一个GLB模型展示&#xff0c;支持TypeScript、支持不同框架使用&#xff0c;具有多种功能。 &#xff08;下图展示一些基础的功能&#xff0c;可以自行扩展&#xff0c;比如光源等&#xff09; 二、主要代码 本模块依赖…...

HashMap面试题

1.hashMap底层实现 hashMap的实现我们是要分jdk 1.7及以下版本&#xff0c;jdk1.8及以上版本 jdk 1.7 实现是用数组链表 jdk1.8 实现是用数组链表红黑树&#xff0c; 链表长度大于8&#xff08;TREEIFY_THRESHOLD&#xff09;时&#xff0c;会把链表转换为红黑树&#xff0c…...

Java编程技巧:swagger2、knif4j集成SpringBoot或者SpringCloud项目

目录 1、springbootswagger2knif4j2、springbootswagger3knif4j3、springcloudswagger2knif4j 1、springbootswagger2knif4j 2、springbootswagger3knif4j 3、springcloudswagger2knif4j 注意点&#xff1a; Api注解&#xff1a;Controller类上的Api注解需要添加tags属性&a…...

第三章:最新版零基础学习 PYTHON 教程(第九节 - Python 运算符—Python 中的除法运算符)

除法运算符允许您将两个数字相除并返回商,即,第一个数字或左侧的数字除以第二个数字或右侧的数字并返回商。 Python 中的除法运算符 除法运算符有两种类型: 浮点数除法整数除法(向下取整除法)整数相除时,结果四舍五入为最接近的整数,并用符号“//”表示。浮点数“/”…...

【python】导出mysql数据,输出excel!

参考https://blog.csdn.net/pengneng123/article/details/131111713 import pymysql import pandas as pd #import openpyxl import xlsxwriterdb pymysql.connect(host"10.41.241.114", port***,user***,password***,charsetutf8mb4 )cursor db.cursor() #创建游…...

【Java 进阶篇】JDBC ResultSet 遍历结果集详解

在Java数据库编程中&#xff0c;经常需要执行SQL查询并处理查询结果。ResultSet&#xff08;结果集&#xff09;是Java JDBC中用于表示查询结果的关键类之一。通过遍历ResultSet&#xff0c;我们可以访问和操作从数据库中检索的数据。本文将详细介绍如何使用JDBC来遍历ResultSe…...

华为数通方向HCIP-DataCom H12-831题库(单选题:161-180)

第161题 某台路由器Router LSA如图所示,下列说法中错误的是? A、本路由器已建立邻接关系 B、本路由器为DR C、本路由支持外部路由引入 D、本路由器的Router ID为10.0.12.1 答案: B 解析: 一类LSA的在transnet网络中link id值为DR的route id ,但Link id的地址不是10.0.12.…...

【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…...

java并发编程 守护线程 用户线程 main

经常使用线程&#xff0c;没有对守护线程和用户线程的区别做彻底了解 下面写4个例子来验证一下 源码如下 /* Whether or not the thread is a daemon thread. */ private boolean daemon false;/*** Marks this thread as either a {linkplain #isDaemon daemon} thread*…...

wordpress 访问权限/杭州百度推广

CentOS安装微软雅黑&#xff0c;解决drawImage中文乱码相关问题使用Graphics的drawString方法向图片上添加汉字时候&#xff0c;Windows是没问题的&#xff0c;在Linux上中文总是乱码&#xff0c;小方块&#xff0c;之前在网上看多很多说是因为Linux系统没有字体的原因&#xf…...

我想给赌博网站做代理/百度广告投放代理商

原标题&#xff1a;提升窗口服务&#xff0c;助力创城工作4月15日&#xff0c;在高新区新市区政务服务大厅&#xff0c;办事群众正在窗口办理相关事项。记者牟敏摄新疆网讯(记者 牟敏)高新区(新市区)发挥政务服务窗口优势&#xff0c;以打造“服务质量最优、办事效率最高”政务…...

手机创建微信公众号/seo怎么做关键词排名

2019独角兽企业重金招聘Python工程师标准>>> 1. 学习每一门新技术都是从HelloWorld小案例开始&#xff0c;这仿佛是IT界无形的铁律了&#xff0c;今天也不例外,以下是flume配置文件中配置信息。 agent.sources s1 agent.channels c1 agent.sinks k1 agent.s…...

网页设计与网站开发经济可行性/做广告推广哪个平台好

转自&#xff1a;http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件&#xff1a; 1、RSS.NET.dll: RSS.NET是一款操作RSS feeds的开源.net类库。它为解析和编写 RSS feeds提供了一个可重用的对象模型。它完全兼容RSS 0.90,0.91&#xff0c;0.92&#xf…...

眉山网站建设/设计网站的软件

这是本系列第19篇文章&#xff0c;至此&#xff0c;Lightroom Classic的面板栏已经讲完了&#xff0c;今天来讲讲直方图与面板栏之间这一小条&#xff1a;工具栏。虽然这里有6个工具 &#xff0c;但我都放在一篇文章里讲&#xff0c;大家可以快速了解这些工具。这些工具很多与C…...

昭通建设局网站/网站一键生成

strip_whitespace() php读取txt文件并分割行替换空字符串 $handler opendir(zhuzhuoquan);//文件夹名 $ii0; $str ; while( ($filename readdir($handler)) ! false ) { if($filename . || $filename.. || $filenameviews) continue;$ii;//echo $ii.. .$filename.<br…...