C#编程:数组初始化与操作详解

需积分: 19 1 下载量 192 浏览量 更新于2024-08-19 收藏 844KB PPT 举报
"本章介绍了C#中数组和字符串的相关知识,包括数组的概念、声明、创建、初始化、访问以及遍历。同时,提到了字符串的常用方法和System.Array类的一些功能。" 在C#编程中,数组是一种特殊的数据结构,用于存储同类型的多个数据项。数组分为一维数组和多维数组,一维数组类似于线性的列表,而多维数组则可以看作是矩阵,通过多个索引来定位元素。例如,一维数组可以通过索引[0]到[N-1]来访问其元素,而多维数组可以有多个这样的索引,如[0][0]到[M-1][N-1]。 声明和创建数组涉及指定数组的类型和大小。例如,`int[] pins = new int[4]{ 9, 3, 7, 2 };`声明了一个整型数组`pins`,大小为4,并初始化了前四个元素的值。数组元素也可以通过调用方法得到,如使用`Random`类生成随机数。 初始化数组变量时,可以使用花括号{}内提供初始值,也可以不提供初始值,此时数组元素会被自动初始化为其类型的默认值(如整型为0,引用类型为null)。初始化后,可以使用索引来访问单个元素,如`pins[0]`会得到第一个元素的值。 遍历数组有两种常见方式:使用`for`循环和`foreach`循环。`for`循环通常用于已知数组长度的情况,如`for(int i = 0; i < pins.Length; i++)`,`foreach`循环则适用于遍历可枚举类型,如`foreach(int pin in pins)`。 字符串在C#中是特殊的类,继承自`Object`,并且是不可变的。这意味着每次修改字符串,实际上是创建了一个新的字符串实例。字符串类提供了许多内置方法,如`Substring`用于提取子字符串,`Replace`用于替换子字符串,`ToLower`和`ToUpper`用于转换大小写,以及`Trim`用于去除字符串两端的空白字符等。 `System.Array`类是所有数组的基类,提供了许多用于操作数组的静态方法,如`Sort`用于对数组进行排序,`Copy`用于复制数组,`Clear`用于清空数组元素,以及`Clone`用于创建数组的副本等。这些方法使得在处理数组时有更大的灵活性。 本章的学习目标还包括理解如何将数组作为方法参数传递,以及如何利用`System.Array`类的方法进行更复杂的数据操作。通过实践和实验,开发者能够更好地掌握数组和字符串的使用,提高编程能力。

#include <iostream> #include <cstring> using namespace std; bool input(char &c, int &row); char* print(char* &result, char c, int row); void output(char* result); void test(); bool test(char c, int row, char* exp); int main() { char c; char* result = nullptr; int row; test(); input(c, row); cout << "&result: " << &result << " result: " << result << endl; char* print(char* &result,char c,int row); cout << "&result: " << &result << " result: " << result << endl; output(result); delete [] result; return 0; } bool input(char &c, int &row) { cin >> row >> c; return true; } char* print(char* &result, char c, int row) { cout << "&result: " << &result << " result: " << result << endl; result = new char[100]; int index = 0; for(int i = 0; i < row; i++) { for(int j = 0; j <= i; j++) result[index++] = c; result[index++] = '\n'; } result[index++] = '\0'; cout << "&result: " << &result << " result: " << result << endl; return result; } void output(char* result) { cout << result; } void test() { char exp[] = "\n\n\n*\n**\n*****\n"; if(test('*', 6, exp)) { cout << "1. 6* succeeded!" << endl; } else { cout << "1. 6* failed!" << endl; } } bool test(char c, int row, char* exp) { char* result = nullptr; bool isSucc = true; int resLen = strlen(print(result, c, row)); int expLen = strlen(exp); cout << resLen << " " << expLen << endl; if(resLen != expLen) isSucc = false; else for(int i = 0; i < resLen; i++) { if(exp[i] != result[i]) { isSucc = false; break; } } delete[] result; return isSucc; }把每行代码都翻译一下

2023-06-11 上传