IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C#,入门教程——数据的基本概念与使用方法 -> 正文阅读

[C++知识库]C#,入门教程——数据的基本概念与使用方法

?

本文所述的知识基本上适用于C/C++,java等其他语言。

数据是程序的基础,算法是程序的栋梁。

徒弟们交作业的之后,一般都会有BUG,而大多数情况下,往往不是算法的错误,而是数据的错误,很低级的错误。天下算法一大抄,差不了哪儿去,能蒙事情过关。而数据的错误,程序员自己却往往不能发现。

本文仅仅叙述一点数据的使用方法,不能解决太多的问题。本文也不是什么强文,不过是一点笔记。下面的论述是极为简单的,仅仅适用于最最入门者阅读,稍有基础者可掠过!

第一场 平淡无奇的办公室

先看一段原始的数据使用场景,整数:

int va = 10;
int vb = va;
sb.AppendLine("整数(int)开始(浮点数等一样)<br>");
sb.AppendLine("va=" + va + "<br>");
sb.AppendLine("vb=" + vb + "<br>");
vb = 20;
sb.AppendLine("vb=20之后:<br>");
sb.AppendLine("va=" + va + "<br>");
sb.AppendLine("vb=" + vb + "<br>");

计算结果:

整数(int)开始(浮点数等一样)
va=10
vb=10
vb=20之后:
va=10
vb=20

再看字符串的情况:

string vc = "string cccc";
string vd = vc;
sb.AppendLine("<hr>");
sb.AppendLine("字符串(String)开始<br>");
sb.AppendLine("vc=" + vc + "<br>");
sb.AppendLine("vd=" + vd + "<br>");

vd = "string d";
sb.AppendLine("d=\"string d\"之后<br>");
sb.AppendLine("vc=" + vc + "<br>");
sb.AppendLine("vd=" + vd + "<br>");

计算结果:

字符串(String)开始
vc=string cccc
vd=string cccc
d="string d"之后
vc=string cccc
vd=string d

以上的程序,结果都符合你的预期?当然。

可以这么理解:

va ,vb 是两间办公室,分别有各自的钥匙。

va 办公室的桌上分别放了 10元。vb = va ,是说 vb 办公室与 va 办公室一样,也放了 10 元。

vb = 20 ,是说 vb 桌上 10元拿走了,改放了 20 元(这就是赋值!)。

字符串的操作,在计算机内部,实际上与整数的操作完全不同,不过 C# 编译器为了大家的方便,让大家使用起来与 int 一样。这是 C# 比 C/C++ 开发效率更高的原因之一。

第二场 有两张桌子的办公室

数组!数组!

这次办公室内有两张桌子。一开始分别放了100元,200元。

int[] ve = new int[2] { 100, 200 };
int[] vf = ve;
sb.AppendLine("<hr>");
sb.AppendLine("数组(Array)开始<br>");
sb.AppendLine("ve=" + ve[0] + "," + ve[1] + "<br>");
sb.AppendLine("vf=" + vf[0] + "," + vf[1] + "<br>");

vf[1] = 300;
sb.AppendLine("vf[1]=300之后<br>");
sb.AppendLine("ve=" + ve[0] + "," + ve[1] + "<br>");
sb.AppendLine("vf=" + vf[0] + "," + vf[1] + "<br>");

请问:这段程序执行之后,房间ve 内,第二张桌子上有多少钱?也就是?ve[1] 的数据是多少?

选择题:( )200元?( )300元?( )100元?

看答案:

数组(Array)开始
ve=100,200
vf=100,200
vf[1]=300之后
ve=100,300
vf=100,300

这个事得这么理解:

ve 是新创建的办公室,有两张桌子,分别放了 100 元,200元。

vf = ve ;等于是给你 ve 的另外一把钥匙。

vf[1] = 300 ,说,进去之后,第二个桌上拿走了 200元,放了 300 元。

这里的关键是:(1)只有一个办公室,不像前面是两个不同的办公室;(2)vf 只是一把钥匙!

徒弟们屡屡在这样的情况下内犯错误,无语。

同样的情况,同样适用于? List Stack Queue 等等各种数据集 Collections。

List<int> vg = new List<int>();
vg.Add(400);
vg.Add(500);
List<int> vh = vg;
sb.AppendLine("<hr>");
sb.AppendLine("列表List开始<br>");
sb.AppendLine("vg=" + vg[0] + "," + vg[1] + "<br>");
sb.AppendLine("vh=" + vh[0] + "," + vh[1] + "<br>");
vh[1] = 600;
sb.AppendLine("vh[1]=600之后<br>");
sb.AppendLine("vg=" + vg[0] + "," + vg[1] + "<br>");
sb.AppendLine("vh=" + vh[0] + "," + vh[1] + "<br>");

计算结果:

列表List开始
vg=400,500
vh=400,500
vh[1]=600之后
vg=400,600
vh=400,600

?

第三场 独立的办公室

谁都喜欢独立的办公室。

这么办:

List<int> vk = new List<int>(vg);
sb.AppendLine("<hr>");
sb.AppendLine("新列表List vk<br>");
vk[1] = 700;
sb.AppendLine("vg=" + vg[0] + "," + vg[1] + "<br>");
sb.AppendLine("vk=" + vk[0] + "," + vk[1] + "<br>");

List<int> vs = new List<int>();
foreach (int vi in vg) vs.Add(vi);
sb.AppendLine("<hr>");
sb.AppendLine("新列表List vs<br>");
vs[1] = 800;
sb.AppendLine("vg=" + vg[0] + "," + vg[1] + "<br>");
sb.AppendLine("vs=" + vs[0] + "," + vs[1] + "<br>");

计算结果:

新列表List vk
vg=400,600
vk=400,700


新列表List vs
vg=400,600
vs=400,800

记住了,关键是 new !

List<int> vk = new List<int>(vg);?

等于克隆?Clone?

List<int> vs = new List<int>();
foreach (int vi in vg) vs.Add(vi);

也是克隆?Clone

只有是新开的、有独立钥匙(地址)的办公室,才是你的独立办公室!

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:00:47  更:2022-06-01 15:02:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:59:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码