【C语言初阶】函数
文章目录
- 💐专栏导读
- 💐文章导读
- 🌷函数是什么?
- 🌷函数的分类
- 🌺库函数
- 🌺自定义函数
- 🌷函数的参数
- 🌷函数的调用
- 🌷函数的嵌套调用和链式访问
- 🌺嵌套调用
- 🌺链式访问
- 🌷函数的声明和定义
- 🌺函数声明
- 🌺函数定义
- 🌷函数递归
- 🌺什么是递归?
- 🌺递归的两个必要条件
- 🌷递归与迭代
💐专栏导读
🌸作者简介:花想云,在读本科生一枚,致力于 C/C++、Linux 学习。
🌸专栏简介:本文收录于 C语言初阶专栏,本专栏主要内容为C语言的初阶知识的全套讲解,包含初识C语言、函数、数组、分支与循环、操作符、指针初阶的讲解。
🌸相关专栏推荐:C语言进阶系列 、数据结构与算法。
💐文章导读
本章为大家介绍了C语言中函数
的相关概念。如:函数是什么、函数的分类、函数的形参与实参、函数的调用、函数的递归、函数的递归与迭代等等。
🌷函数是什么?
数学中我们常见到函数的概念,那么C语言中的函数是什么呢?
来看看维基百科
中对于函数的定义:
在计算机科学中,函数 =
子程序
(英语:Subroutine, procedure, function, routine,
method,subprogram, callable unit),是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性
。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。png)
- 我是这么理解函数的:
函数——具有某种功能的代码块
。
一个程序中我们经常会用到某种功能,如两数相加
,如果每次都在需要用到时实现,那么就显得过于繁杂。此时,我们就可以将两数相加的功能封装
起来,在需要使用的地方进行函数调用即可。
🌷函数的分类
🌺库函数
-
我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息
按照一定的格式打印
到屏幕上(printf)。 -
在编程的过程中我们会频繁的做一些字符串的
拷贝
工作(strcpy)。 -
在编程是我们也计算,总是会计算
n的k次方
这样的运算(pow)。
像上面我们描述的基础功能,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。
- 那么库函数都有哪些呢?这里我给大家提供一个使用频率非常高的网站:
http://www.cplusplus.com(简易轻便,缺点是全英文但并不影响阅读)
在里面我们可查询到各种各样的库函数及其使用方法。
库函数数量很多,无法一一列举,只能对其分类:
-
IO函数
字符串操作函数
字符操作函数
内存操作函数
时间/日期函数
数学函数
其他库函数
我们参照文档,简单认识几个库函数:
strlen
:求字符串长度的函数;
size_t strlen(const char* str)//size_t本质就是unsigned int
#include <stdio.h>//包含库函数printf所对应的头文件<stdio.h>
#include <string.h>//包含库函数strlen所对应的头文件<string.h>int main()
{int str1[]= "zhangsan";int str2[] = "lisi";int len = strlen(str1);printf("%d",len);return 0;
}
strcpy
:将一个字符串中的内容拷贝到另一个字符串;
char* strcpy(char* destination, const char* source);
#include <stdio.h>//包含库函数printf所对应的头文件<stdio.h>
#include <string.h>//包含库函数strcpy所对应的头文件<string.h>int main()
{int str1[]= "zhangsan";int str2[] = "lisi";int len = strlen(str1);strcpy(str1, str2);printf("%d",len);return 0;
}
注意:使用库函数必须包含 #include
对应的头文件。
🌺自定义函数
如果库函数能干所有的事情,那还要程序员干什么?
所以更加重要的是自定义函数
。
自定义函数和库函数一样,有函数名
,返回值类型
和函数参数
。
但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。
函数的构成
函数返回值类型 函数名 (参数1,参数2,参数3......)
{//...函数体
}
举例
- 写一个函数可以
计算两个数之和
;
#include <stdio.h>
//add函数的设计
int add(int x, int y) {return x + y;
}
- 写一个函数可以
找出两个整数中的最大值
;
#include <stdio.h>
//get_max函数的设计
int get_max(int x, int y) {return (x > y) ? (x) : (y);
}
🌷函数的参数
C语言中函数的参数一般分为两种:
-
实际参数(实参)
:真实传给函数的参数,叫
实参
。实参可以是:常量、变量、表达式、函数等
。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
-
形式参数(形参)
:形式参数是指函数名后括号中的变量,因为
形式参数只有在函数被调用的过程中才实例化(分配内存单元
),所以叫形式参数
。
形式参数当函数调用完成之后就自动销毁了
。因此形式参数只在函数中有效。
举例:交换两个变量num1和num2中的值;
#include <stdio.h>
//实现成函数,但是不能完成任务
void Swap1(int x, int y) {int tmp = 0;tmp = x;x = y;y = tmp;
}
//正确的版本
void Swap2(int* px, int* py) {int tmp = 0;tmp = *px;*px = *py;*py = tmp;
}
int main()
{int num1 = 1;int num2 = 2;Swap1(num1, num2);printf("Swap1::num1 = %d num2 = %d\n", num1, num2);Swap2(&num1, &num2);printf("Swap2::num1 = %d num2 = %d\n", num1, num2);return 0;
}
运行结果如图所示,至于为什么两个函数的运行结果不相同,原因如下:
- 首先 Swap1 和 Swap2 函数中的参数
x,y,px,py
都是形式参数
。在main函数中传给 Swap1 的num1 ,num2
和传给 Swap2 函数的&num1 , &num2
是实际参数
。 - 在调用函数Swap1时,形参 x 和 y 拥有自己的空间,同时拥有了和实参一模一样的内容。
此时x=1,y=2,当函数执行完之后,x=2,y=2。x和y确实交换了值,但与num1和num2并没有什么关系
。 - Swap2不同,形参
px、py
是指针变量
(int*为指针类型,后期会讲),对它俩进行解引用后再将值交换,实际上交换的就是num1和num2所在空间的内容。
所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝
。
🌷函数的调用
函数的调用分为两种:
传值调用
;
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参
。(例如Swap1)
传址调用
;
传址调用是把函数外部创建变量
的内存地址
传递给函数参数
的一种调用函数的方式。这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。(例如Swap2)
🌷函数的嵌套调用和链式访问
函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的。
🌺嵌套调用
我中有你,你中有我
在一个函数中可以调用另外一个函数
。
举例
#include<stdio.h>
int add(int x, int y)//函数1
{return x + y;
}int addplus(int x, int y,int z)//函数2
{int sum = 0;sum = add(x, y);//调用函数1return sum + z;
}
int main()
{int num1 = 1;int num2 = 2;int num3 = 3;int pr=addplus(num1, num2, num3);printf("%d\n", pr);return 0;
}
🌺链式访问
把一个函数的返回值作为另外一个函数的参数
。
举例
#include<stdio.h>
int add(int x, int y)//add函数返回值是int类型
{return x + y;
}#include <stdio.h>
int main()
{int num1 = 1;int num2 = 2;printf("%d\n", add(num1,num2));printf("%d", printf("%d", printf("%d", 43)));//结果是啥?//注:printf函数的返回值是打印在屏幕上字符的个数return 0;
}
🌷函数的声明和定义
🌺函数声明
-
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函 数声明决定不了;
-
函数的声明
一般出现在函数的使用之前
。要满足先声明后使用
; -
函数的声明一般要放在
头文件
中的。
举例
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>//申请一个结点
SLTNode* BuySLTNode(SLTDataType data);
//创建一个链表,包含数据为0~n
SLTNode* CreateSList(int n);
//释放内存
void SLTDestroy(SLTNode** pphead);
//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType data);
//尾删
void SLTPopBack(SLTNode** pphead);
//...
🌺函数定义
函数的定义是指函数的具体实现,交待函数的功能实现
。
举例
SLTNode* BuySLTNode(SLTDataType data)
{SLTNode* newNode = (SLTNode*)malloc(sizeof(SLTNode));//检查是否申请成功if (newNode == NULL){perror("malloc fail");exit(-1);}//对newNode进行初始化newNode->data = data;newNode->next = NULL;//返回申请成功的结点return newNode;
}SLTNode* CreateSList(int n)
{...//过程省略
}void SLTDestroy(SLTNode** pphead)
{...//过程省略
}void SLTPushBack(SLTNode** pphead, SLTDataType data)
{...//过程省略
}
void SLTPopBack(SLTNode** pphead)
{...//过程省略
}
🌷函数递归
🌺什么是递归?
程序调用自身的编程技巧称为递归( recursion)
。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的主要思考方式在于:把大事化小
。
🌺递归的两个必要条件
-
存在限制条件,当满足这个限制条件的时候,递归便不再继续;
-
每次递归调用之后越来越接近这个限制条件。
举例:
接受一个整型值(无符号),按照顺序打印它的每一位(例如:输入:1234,输出 1 2 3 4)。
#include <stdio.h>
void print(int n)
{if (n > 9){print(n / 10);}printf("%d ", n % 10);
}
int main()
{int num = 1234;print(num);return 0;
}
🌷递归与迭代
函数在被调用时会建立函数栈帧
(简单理解为建立函数栈帧就是在内存中申请了一块中间来运作函数执行)。有些情况下,递归并不是特别高效,例如遇到斐波那契数列
的问题时,就不再那么实用(虽然递归的实现方式易于理解代码)。
举例
//求斐波那契数列中第n个数
int fib(int n) {if (n <= 2)return 1;elsereturn fib(n - 1) + fib(n - 2);
}
这段代码理论上可以求出任何n
的结果,但是实际上当n
等于50左右
程序就会挂掉。原因是这段代码的算法对内存的消耗巨大。
在调试 fib 函数的时候,如果你的参数比较大,那就会报错:
stack overflow
(栈溢出)这样的信息。系统分配给程序的栈空间是有限的,但是如果出现了死循环,或者(死递归),这样有可能导致一直开辟栈空间,最终产生栈空间耗尽的情况,这样的现象我们称为栈溢出
。
那如何解决上述的问题?
- 将
递归
改写成非递归
; - 使用
static
对象替代nonstatic
局部对象。在递归函数设计中,可以使用 static对象替代nonstatic局部对象(即栈对象),这不 仅可以减少每次递归调用和返回时产生和释放 nonstatic 对象的开销,而且static 对象还可以保存递归调用的中间状态,并且可为各个调用层所访问;
举例
下面代码就采用了非递归
的方式来实现:
//求第n个斐波那契数
int fib(int n) {int result;int pre_result;int next_older_result;result = pre_result = 1;while (n > 2){n -= 1;next_older_result = pre_result;pre_result = result;result = pre_result + next_older_result;}return result;
}
-
许多问题是以递归的形式进行解释的,这只是因为它比非递归的形式更为清晰。
-
但是这些问题的迭代实现往往比递归实现效率更高,虽然
代码的可读性稍微差些
。 -
当一个问题相当复杂,难以用迭代实现时,此时递归实现的简洁性便可以补偿它所带来的运行时开销。
点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
*** ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓***
相关文章:
【C语言初阶】函数
文章目录💐专栏导读💐文章导读🌷函数是什么?🌷函数的分类🌺库函数🌺自定义函数🌷函数的参数🌷函数的调用🌷函数的嵌套调用和链式访问🌺嵌套调用&a…...
CentOS 7安装redis6.2.6(包括服务开机自启和开放端口)
CentOS 7安装redis6.2.61. 官网下载redis文件2. 校验安装依赖2.1 安装系统默认版本gcc2.2 升级gcc版本3. 解压编译安装4. 修改配置redis.conf4.2 设置密码4.3 绑定ip(可选)5. 启动redis服务并测试5.2 测试安装是否成功5.3 redis开机自启配置6.开放防火墙…...
基于注解的自动装配~
Autowired:实现自动装配功能的注解 Autowired注解能够标识的位置: 标识在成员变量上,此时不需要设置成员变量的set方法标识在成员变量对应的set方法上标识在为当前成员变量赋值的有参构造上使用注解进行自动装配,只要在其成员变量…...
【深度学习】【分布式训练】Collective通信操作及Pytorch示例
相关博客 【深度学习】【分布式训练】Collective通信操作及Pytorch示例 【自然语言处理】【大模型】大语言模型BLOOM推理工具测试 【自然语言处理】【大模型】GLM-130B:一个开源双语预训练语言模型 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介…...
Spring常用注解说明
目录 1.常用注解 2.特别说明 3.xml及注解方式 1.常用注解 (1) SpringBootApplication (2) ControllerRestControllerRequestMappingRequestParamPathVariableGetMappingPostMappingPutMappingDeleteMappingResponseBodyRequestBodyCrossOrigin (3) ConfigurationBeanServ…...
13-C++面向对象(纯虚函数(抽象类)、多继承、多继承-虚函数、菱形继承、虚继承、静态成员)
虚析构函数 存在父类指针指向子类对象的情况,应该将析构函数声明为虚函数(虚析构函数) 纯虚函数 纯虚函数:没有函数体且初始化为0的虚函数,用来定义接口规范 抽象类: 含有纯虚函数的类,不可以实…...
Android DataBinding 自定义View实现数据双向绑定
看不懂的可以先看看单向数据绑定:Android DataBinding数据变化时自动更新界面_皮皮高的博客-CSDN博客 然后再确定已经启动了dataBinding的情况下,按下面的顺序来: 首先创建一个自定义View: import android.content.Context imp…...
网络安全中的渗透测试主要那几个方面
渗透测试中主要有软件测试和渗透测试。 1、测试对象不同 软件测试:主要测试的是程序、数据、文档。 渗透测试:对象主要为网络设备、主机操作系统、数据库系统和应用系统。 2、测试内容不同 软件测试:主要工作内容是验证和确认,发…...
Cursor:GPT-4 驱动的强大代码编辑器
Cursor (https://www.cursor.so/)是 GPT-4 驱动的一款强大代码编辑器,可以辅助程序员进行日常的编码。下面通过一个实际的例子来展示 Cursor 如何帮助你编程。这个例子做的事情是网页抓取。抓取的目标是百度首页上的百度热搜,如下…...
C/C++中for语句循环用法及练习
目录 语法 下面是 for 循环的控制流: 实例 基于范围的for循环(C11) 随堂笔记! C语言训练-计算1~N之间所有奇数之和 题目描述 输入格式 输出格式 样例输入 样例输出 环形方阵 干货直达 for 循环允许您编写一个执行特定次数的循环的重复控制结构。…...
AnimatorOverrideController说明
unity-AnimatorOverrideControllerhttps://docs.unity.cn/cn/current/ScriptReference/AnimatorOverrideController.html 用于控制动画器重写控制器的接口。 动画器重写控制器的用途是重写某个控制器的动画剪辑,从而为给定化身定制动画。 在运行时基于相同的 Anim…...
1.4、第三阶段 MySQL数据库
root数据库技术 一、数据库理论 1 什么是数据库技术 数据库技术主要研究如何组织、存储数据,并如何高效地提取和处理数据。 2 什么是SQL SQL(Structured Query Language)结构化查询语言 SQL是操作数据库的命令集,也是功能齐全的…...
LeetCode:202. 快乐数
🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀算法专栏: 👉🏻123 一、🌱202. 快乐数 题目描述:编写一个算法来判断一个数 n 是不是快…...
Android 14 新功能之 HighLights:快速实现文本高亮~
日常开发中可能会遇到给 TextView 的全部或部分文本增加高亮效果的需求,以前可能是通过 Spannable 或者 Html 标签实现。 升级 Android 14 后就不用这么迂回了,因其首次引入直接设置高亮的 API:HighLights。需要留意的是 HighLights API 和 …...
[渗透教程]-004-嗅探工具-Nmap
文章目录 Nmap介绍基本操作进阶操作Nmap介绍 nmap是一个网络扫描和主机检测工具,它可以帮助用户识别网络上的设备和服务。获取主机正在运行哪些服务,nmap支持多种扫描,UDP,TCP connect(),TCP SYN(半开扫描) ftp代理,反向标志,ICMP,FIN,ACK扫描,ftp代理,反向标志,ICMP. 可以用于…...
大数据技术之Hive SQL题库-初级
第一章环境准备1.1 建表语句hive>-- 创建学生表 DROP TABLE IF EXISTS student; create table if not exists student_info(stu_id string COMMENT 学生id,stu_name string COMMENT 学生姓名,birthday string COMMENT 出生日期,sex string COMMENT 性别 ) row format delim…...
常见HTTP状态码汇总
文章目录1xx: 信息2xx: 成功3xx: 重定向4xx: 客户端错误5xx: 服务器错误1xx: 信息 状态码描述100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。101 Switching Protocols服务器转换协议:服…...
蓝桥杯刷题冲刺 | 倒计时15天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.年号字串2.裁纸刀3.猜生日1.年号字串 题目 链接: 年号字串 - 蓝桥云课 (lanqiao.c…...
【差分数组】
差分数组一维差分差分数组的作用差分矩阵结语一维差分 输入一个长度为 n 的整数序列。接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c ,请你输出进行完所有操作后的序列。 输入格式 第一行包含两个…...
2022年NOC软件创意编程(学而思)决赛小学高年级组scratch
2022NOC决赛图形化小高组 一、选择题 1.运行下面的程序,最终“我的变量”的值是多少? 2.希望定义一个函数如下,可以让角色旋转指定的圈数。里面空缺的地方填上什么数字比较合适? 3.运行程序,在舞台上可以看见几个角色 ? 4.运行程序,角色会依次说什么 ? 5.我们都知…...
[JAVA]一步接一步的一起开发-图书管理系统(非常仔细,你一定能看懂)[1W字+]
目录 1.想法 2.框架的搭构 2.1图书 2.1.1Book类 2.1.2BookList类 2.2用户 2.2.1User抽象类 2.2.2AdminUser类(管理者) 2.2.3NormalUser 2.3操作 操作接口 借阅操作 删除操作 查询操作 归还图书 展示图书 退出系统 2.4小结 3.主函数的编…...
大数据周会-本周学习内容总结07
目录 01【hadoop】 1.1【编写集群分发脚本xsync】 1.2【集群部署规划】 1.3【Hadoop集群启停脚本】 02【HDFS】 2.1【HDFS的API操作】 03【MapReduce】 3.1【P077- WordCount案例】 3.2【P097-自定义分区案例】 历史总结 01【hadoop】 1.1【编写集群分发脚本xsync】…...
搭建一个双系统个人服务器
搭建一个双系统个人服务器0.前言一、双系统安装1.磁盘划分2.windows安装3.ubuntu安装二、系统启动项美化:1. refind引导2. 美化 grub 界面三、系统代理0.前言 年后找了份工作,忙于适应新环境所以更新也减缓了,最近闲暇时间给个人电脑进行了整…...
电脑长按电源键强行关机,对SSD有伤害吗?SSD 掉盘之殇
说到“按住电源键强制关机”的操作,想必大家都不会陌生,毕竟在电脑蓝屏或者电脑死机的时候,我们总是束手无策。而且,身边的人在遇到同样的情况时,往往都是选择长按电源键强制关机,所以当我们遇到同样的情况…...
Linux:centos内核优化详解
一、系统内核部分设置在以下文件 vim /etc/sysctl.conf 1.禁用IPV6 net.ipv6.conf.all.disable_ipv6 1 # 禁用整个系统所有接口的IPv6 net.ipv6.conf.default.disable_ipv6 1 net.ipv6.conf.lo.disable_ipv6 1 # 禁用某一个指定接口的IPv6(此处为:lo) 理想情况下,…...
链表经典OJ题合集(包含带环问题,相交问题,随机指针复制等,附动画讲解)
目录 一:前言 二:简单题目 (1)移除链表元素 (2)反转链表 (3)找链表的中间结点 (4)输入一个链表,输出该链表中倒数第k个结点 (5)合并两个有序链表 (6)相交链表 (7)判断链表是否带环 三:较难题目 (1)链表分割 (2)判断链表是否为回…...
CSS新增
系列文章目录 前端系列文章——传送门 CSS系列文章——传送门 文章目录系列文章目录什么是 CSS3渐进增强和优雅降级CSS3 中的选择器CSS3 中的背景CSS3 中的边框CSS3 中的文本效果CSS3 中的字体 font-face什么是 CSS3 CSS3是CSS(层叠样式表)技术的升级版…...
奇安信_防火墙部署_透明桥模式
奇安信_防火墙部署_透明桥模式一、预备知识二、项目场景三、拓扑图四、基本部署配置1. 登录web控制台2.连通性配置3.可信主机配置4.授权导入5.特征库升级6.安全配置文件五、透明桥配置1. 创建桥2. 端口绑定桥3. 创建桥端口六、结语一、预备知识 安全设备接入网络部署方式 二、…...
C语言——字符串函数(2)和内存函数
(一)strtok函数dilimiters参数是个字符串,定义了用作分隔符的字符集合第一个参数指定一个字符串,它包含了0个或者多个由dilimiters字符串中一个或者多个分隔符分割的标记。strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回…...
第1节 线性回归模型
1. 模型概述 对于收集到的数据(xi,yi)(x_i,y_i)(xi,yi),建立线性回归模型yiθTxiεi(1)y_i\theta^{^T} x_i \varepsilon_i (1)yiθTxiεi(1) 需要估计的参数为θT\theta^{^T}θT,我们的目的是让估计的参数θT\theta^{^T}θT和xix_ixi…...
做身份证网站/市场推广方案怎么做
Angular 中的路由 一、 Angular 创建一个默认带路由的项目 命令创建项目 ng new ng-demo --skip-install 创建需要的组件 ng g component components/home ng g component components/news ng g component components/newscontent找到 app-routing.module.ts 配置路由 引入…...
asp.net网站项目建设/百度24小时人工电话
1.rm命令rm命令可以删除指定的文件或目录。也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。2.rm命令使用方法语法:rm [选项] 参数选项:-f:强制删除。…...
vs2013怎么做网站/百度seo推广工具
目录 1.概述 2.图解表格布局中的常用术语和概念 2.1 表格布局有哪些属性 2.2 Margin(边距) 2.3 Spacing(间隔) 2.4 Strech(纵向和横向拉伸系数) 2.5 最小行高与最小列宽 2.6 SizeConstraint(尺寸控制模式) 3.基础用法 3.1 使用Qt设计师创建布局 3.2 使用代码创建布…...
h5自响应式网站模版/河南整站百度快照优化
学校介绍山西财经大学运城学院前身为原山西省运城市会计学校和运城市商业学校,成立于1979年。学院校风纯正,环境幽雅,办学条件良好,办学指导思想科学,办学方向明确,办学模式先进,师资队伍优良&a…...
独立创建网站/公司官网搭建
问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱。克隆了服务器代码到本地,按需求进行代码开发。提交本地代码到服务器时出现错误。具体如下: git push 提交代码到远程服务器是出现错误…...
奥门网站建设/最新新闻摘抄
Stepper常常用于表单的提交中,比如内容较多,一页显示不了,要分几页提交时使用 https://api.flutter.dev/flutter/material/Stepper-class.html...