asp做登入网站,肥城网站建设价格,泰安企业网站制作,上海有哪些优化网站推广公司#x1f4dd;前言#xff1a; 本文章适合有一定C语言编程基础的读者浏览#xff0c;主要介绍从C语言到C过度#xff0c;我们首先要掌握的一些基础知识#xff0c;以便于我们快速进入C的学习#xff0c;为后面的学习打下基础。 这篇文章的主要内容有#xff1a; 1#x…前言 本文章适合有一定C语言编程基础的读者浏览主要介绍从C语言到C过度我们首先要掌握的一些基础知识以便于我们快速进入C的学习为后面的学习打下基础。 这篇文章的主要内容有 1命名空间namespace 2C的输入和输出 3缺省参数 4函数重载 个人简介努力学习ing 个人专栏C学习笔记 CSDN主页 愚润求学 其他专栏C语言入门基础python入门基础python刷题专栏 快速从C过度C一 一namespace1. namespace的定义1.1. 作用域1.2. namespace定义 2. namespace的使用2.1. 指定namespace2.2. 展开namespace2.2.1. 展开整个namespace2.2.2. 展开单个变量 2.3. 使用注意事项 二C的输入和输出1. 核心概念1.1. 流Stream1.2. 标准流对象 2. 基本输入和输出操作2.1. 输出2.2. 输入 3. 格式化输出3.1. 使用流操纵符3.2. 控制进制 4. 文件输入和输出4.1. 文件输出4.2. 文件输入 5 提升IO效率 三缺省参数1. 缺省参数的基本用法1.1. 语法2.2. 示例 2. 缺省参数的规则2.1. 从右向左设置缺省参数2.2. 函数声明和定义2.3. 调用时的参数匹配2.4. 默认值必须是常量或全局变量 四函数重载1. 函数重载的基本规则1.1. 参数列表必须不同1.2. 示例1.3. 避免歧义调用 一namespace
1. namespace的定义
1.1. 作用域
在学习namespace前我们先了解域的概念。 在C语言中我们学习过全局变量和局部变量看下面这段代码
#includestdio.h
int a 10;
int b 30;
int main() {int a 20;printf(%d\n, a); //输出 20printf(%d, b); //输出 30return 0;
}全局变量的作用域是全局局部变量的作用域是函数内且局部变量的优先级高于全局变量。除了这两个域C中还有命名空间域类域。域影响的是编译时语法查找一个变量/函数/类型的出处的逻辑在同一个域中出现同名就会冲突如
int a 10;
int a 30;为了解决这个问题C引入了namespace目的是对标识符的名称进行本地化以避免冲突。 全局域和局部域还会影响变量的生命周期命名空间域和类域不影响变量生命周期。
1.2. namespace定义
基本语法 namespace关键字 空间名称 {} 注意{}后不需要跟;如
namespace tr
{// 命名课件内可定义 变量/函数/类int a 10;int sub(int a, int b) {return a - b;}struct Node {struct Node* next;int val;};
}2. namespace的使用
2.1. 指定namespace
语法名称::变量名 ::是作用域解析符用来指定要使用的明明空间中的成员
int a 10;
namespace tr {int a 20;
}
int main() {printf(%d, tr::a); //输出20return 0;
}2.2. 展开namespace
2.2.1. 展开整个namespace
语法using namespace 命名空间名称 using指令会将命名空间中的所有名称引入到当前作用域注意若有与当前作用域同名的变量就会冲突如
int a 10;
namespace tr {int a 20;
}
using namespace tr; //因为全局已经有一个a会冲突正确可以使用tr::a来访问a因此展开全部成员的这种方法并不推荐冲突风险很大 正确用法
int a 10;
namespace tr {int b 20;int c 30;
}
using namespace tr;
int main() {printf(%d, c); // 输出30return 0;
}2.2.2. 展开单个变量
语法using 命名空间名称::变量名称
int a 10;
namespace tr {int b 20;int c 30;
}
using tr::b;
int main() {printf(%d, b); // 输出20return 0;
}2.3. 使用注意事项
namespace的本质是一个域与全局域和局部域各自独立不同的域可以定义同名变量namespace只能定义在全局可以嵌套定义。一个文件中通常不可以有同名的namespace如果有编译器会合并视作一个不同文件可以有同名的namespace链接时编译器会合并同名的namespace未被展开或者指定时默认在局部和全局里面找变量将namespace用using展开后查找顺序为局部域→命名空间域→全局域 二C的输入和输出
在C中输入和输出I/O主要通过标准库中的iostream头文件提供的流stream机制来实现。C的I/O流库提供了灵活且类型安全的方式来处理输入和输出操作。
1. 核心概念
1.1. 流Stream
流是数据在源和目标之间流动的抽象。输入流Input Stream从外部设备如键盘、文件读取数据。输出流Output Stream向外部设备如屏幕、文件写入数据。
1.2. 标准流对象
C预定义了以下标准流对象
std::cin标准输入流通常与键盘输入关联。std::cout标准输出流通常与屏幕输出关联。std::cerr标准错误流用于输出错误信息无缓冲。std::clog标准日志流用于输出日志信息有缓冲。
主要了解前两个
2. 基本输入和输出操作
2.1. 输出 使用std::cout和插入运算符将数据输出到屏幕。 示例 #include iostreamint main() {int num 42;std::cout Hello, World! std::endl; // 输出字符串并换行std::cout The number is: num std::endl; // 输出变量// 都是以字符串的形式输出相当于把 中间的字符串合并后输出一个 之间只能放一个变量return 0;
}std::endl插入一个换行符并刷新输出缓冲区
2.2. 输入
使用std::cin和提取运算符从键盘读取数据。示例#include iostreamint main() {int age;std::cout Enter your age: ;std::cin age; // 从键盘读取输入并存储到变量 age多个变量输入时可用空格换行符等符号间隔std::cout You are age years old. std::endl;return 0;
}注意std::cin会跳过空白字符如空格、制表符、换行符。
cin和cout自动判断类型
3. 格式化输出
虽然C提供了多种方式格式化输出但是我们任然可以继续使用C语言的格式化输出方式因为C兼容C语言 下面介绍C的格式化输出
3.1. 使用流操纵符
std::setw(n)设置输出宽度为n。std::setprecision(n)设置浮点数精度为n。std::fixed以固定小数格式输出浮点数。std::scientific以科学计数法输出浮点数。示例#include iostream
#include iomanip // 包含流操纵符int main() {double pi 3.141592653589793;std::cout std::fixed std::setprecision(2) Pi: pi std::endl;return 0;
}3.2. 控制进制
std::dec十进制默认。std::hex十六进制。std::oct八进制。示例int num 255;
std::cout std::hex Hex: num std::endl; // 输出 ff4. 文件输入和输出
C通过fstream头文件支持文件操作
4.1. 文件输出
使用std::ofstream将数据写入文件。示例#include iostream
#include fstreamint main() {std::ofstream outFile(output.txt);if (outFile.is_open()) {outFile Hello, File! std::endl;outFile.close();} else {std::cerr Failed to open file! std::endl;}return 0;
}4.2. 文件输入
使用std::ifstream从文件读取数据。示例#include iostream
#include fstream
#include stringint main() {std::ifstream inFile(input.txt);std::string line;if (inFile.is_open()) {while (std::getline(inFile, line)) {std::cout line std::endl;}inFile.close();} else {std::cerr Failed to open file! std::endl; // 若文件未打开使用 std::cerr 输出错误信息。}return 0;
}5 提升IO效率
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);第一句解除 iostream 与 C 标准库的同步。但要注意一旦解除同步就不能再混合使用 C 的流操作和 C 的函数操作否则会导致输入输出顺序混乱 第二三句解除cin和cout的绑定。在默认情况下cin 是和 cout 绑定在一起的即在执行 cin 操作之前会先刷新 cout 的缓冲区以确保输出的内容都被显示出来。 三缺省参数
缺省参数Default Arguments允许函数在定义时为某些参数指定默认值。如果调用函数时没有为这些参数提供实参则使用默认值。
1. 缺省参数的基本用法
1.1. 语法
返回值类型 函数名(参数类型 参数名 默认值);2.2. 示例
#include iostream// 函数声明带有缺省参数
void printMessage(std::string message Hello, World!);int main() {printMessage(); // 使用默认参数,输出: Hello, World!printMessage(Hi!); // 提供自定义参数输出Hi!return 0;
}// 函数定义
void printMessage(std::string message) {std::cout message std::endl;
}2. 缺省参数的规则
2.1. 从右向左设置缺省参数
缺省参数必须从右向左依次设置不能跳过中间的参数。示例void func(int a, int b 10, int c 20); // 正确
void func(int a 5, int b, int c 20); // 错误b 没有默认值2.2. 函数声明和定义
如果函数在声明时指定了缺省参数定义时不能再重复指定。示例// 声明时指定缺省参数
void printNumber(int num 42);// 定义时不能重复指定即: 这里不能再写int num 30
void printNumber(int num) {std::cout num std::endl;
}2.3. 调用时的参数匹配
如果提供了实参则使用实参否则使用默认值。必须从左到右依次给实参不能跳跃给实参示例void printSum(int a, int b 10, int c 20) {std::cout Sum: a b c std::endl;
}int main() {printSum(1); // 输出Sum: 31 (1 10 20)printSum(1, 2); // 输出Sum: 23 (1 2 20)printSum(1, 2, 3); // 输出Sum: 6 (1 2 3)return 0;
}2.4. 默认值必须是常量或全局变量
默认值不能是局部变量或动态计算的值。示例int defaultValue 10;
void func(int a defaultValue); // 正确
void func(int a rand()); // 错误默认值不能是动态计算的值四函数重载
函数重载Function Overloading 是C中的一种特性允许在同一个作用域内定义多个同名函数但这些函数的参数列表必须不同参数的类型、数量或顺序不同。
1. 函数重载的基本规则
1.1. 参数列表必须不同
函数重载的核心是参数列表的不同。参数列表的不同可以体现在 参数的类型不同。参数的数量不同。参数的顺序不同如果类型不同。 注意返回值类型不同不能作为函数重载的依据。
1.2. 示例
下面共五个重载
#include iostreamvoid print(int a) {std::cout Printing int: a std::endl;
}void print(double a) { // 类型不同std::cout Printing double: a std::endl;
}void print(int a, int b) { // 数量不同std::cout Printing two ints: a , b std::endl;
}// 下面两者为顺序不同
void print(int a, char c) { std::cout Printing int: a Printing char: c std::endl;
}void print(char c, int a) { std::cout Printing int: a Printing char: c std::endl;
}int main() {print(10); // 调用 void print(int a)print(3.14); // 调用 void print(double a)print(10, 20); // 调用 void print(int a, int b)print(10, c); // 调用 void print(int a, char c)print(d, 10); // 调用 void print(char c, int a)return 0;
}输出
Printing int: 10
Printing double: 3.14
Printing two ints: 10, 20
Printing int: 10 Printing char: c
Printing int: 10 Printing char: d1.3. 避免歧义调用 示例一 void func(int a, double b 3.14);
void func(int a);func(10); // 错误调用歧义无法确定调用哪个函数示例二
void func(int a 3, double b 3.14);
void func(int a, double b, int c);func(10); // 歧义因为第一个func可接受参数数量[0,2]第二个func可接受参数数量 3 编译器无法判断是错误的调用了第二个还是正确的调用了第一个
func(); // 会调用第一个因为没参数编译器可判断
func(10, 2.1, 5); // 会调用第二个因为传入了三个参数尽量避免写容易歧义的函数重载在调用时也要判断重载的函数是否有歧义。
最后推荐几个个C参考文档 1非官方按头文件分类https://legacy.cplusplus.com/reference/ 2官方中文https://zh.cppreference.com/w/cpp 3官方英文https://en.cppreference.com/w/ 我的分享也就到此结束啦 要是我的分享也能对你的学习起到帮助那简直是太酷啦 若有不足还请大家多多指正我们一起学习交流 公主王子点赞→收藏⭐→关注 感谢大家的观看和支持祝大家都能得偿所愿天天开心
文章转载自: http://www.morning.jftl.cn.gov.cn.jftl.cn http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn http://www.morning.ckhpg.cn.gov.cn.ckhpg.cn http://www.morning.glrzr.cn.gov.cn.glrzr.cn http://www.morning.dpdr.cn.gov.cn.dpdr.cn http://www.morning.prjty.cn.gov.cn.prjty.cn http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.hongjp.com.gov.cn.hongjp.com http://www.morning.clbsd.cn.gov.cn.clbsd.cn http://www.morning.rykmz.cn.gov.cn.rykmz.cn http://www.morning.pdtjj.cn.gov.cn.pdtjj.cn http://www.morning.wlxfj.cn.gov.cn.wlxfj.cn http://www.morning.ygwyt.cn.gov.cn.ygwyt.cn http://www.morning.hdzty.cn.gov.cn.hdzty.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.plhhd.cn.gov.cn.plhhd.cn http://www.morning.qfqld.cn.gov.cn.qfqld.cn http://www.morning.xxwhz.cn.gov.cn.xxwhz.cn http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.zqzzn.cn.gov.cn.zqzzn.cn http://www.morning.rszyf.cn.gov.cn.rszyf.cn http://www.morning.rszt.cn.gov.cn.rszt.cn http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.saastob.com.gov.cn.saastob.com http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.fhwfk.cn.gov.cn.fhwfk.cn http://www.morning.tymwx.cn.gov.cn.tymwx.cn http://www.morning.mytmn.cn.gov.cn.mytmn.cn http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn http://www.morning.mlcwl.cn.gov.cn.mlcwl.cn http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.dkslm.cn.gov.cn.dkslm.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.rzdzb.cn.gov.cn.rzdzb.cn http://www.morning.cfcdr.cn.gov.cn.cfcdr.cn http://www.morning.gwsdt.cn.gov.cn.gwsdt.cn http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn http://www.morning.blfll.cn.gov.cn.blfll.cn http://www.morning.crhd.cn.gov.cn.crhd.cn http://www.morning.rhpy.cn.gov.cn.rhpy.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn http://www.morning.bpmz.cn.gov.cn.bpmz.cn http://www.morning.npbgj.cn.gov.cn.npbgj.cn http://www.morning.sprbs.cn.gov.cn.sprbs.cn http://www.morning.srckl.cn.gov.cn.srckl.cn http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn http://www.morning.lhptg.cn.gov.cn.lhptg.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.sxlrg.cn.gov.cn.sxlrg.cn http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn http://www.morning.vjdofuj.cn.gov.cn.vjdofuj.cn http://www.morning.llqch.cn.gov.cn.llqch.cn http://www.morning.rfyk.cn.gov.cn.rfyk.cn http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn http://www.morning.ljqd.cn.gov.cn.ljqd.cn http://www.morning.xzqzd.cn.gov.cn.xzqzd.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.wwnb.cn.gov.cn.wwnb.cn http://www.morning.npbgj.cn.gov.cn.npbgj.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.bfgbz.cn.gov.cn.bfgbz.cn