2024-2025-1 20241406 《计算机基础与程序设计》第8周学习总结
这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 如2024-2025-1计算机基础与程序设计第八周作业
这个作业的目标 功能设计与面向对象设计 >面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行
作业正文 https://www.cnblogs.com/wangxianglong999/p/18551105
面向对象编程:
面向对象语言有三个关键要素,分别如下:
封装
封装是指将对象的属性和操作方法结合在一起,形成一个相对独立的单元,对外隐藏对象的内部实现细节。就好比一台电视机,用户只需通过遥控器操作开关键、频道调节键等简单接口(相当于对外公开的方法),而不需要了解其内部电路构造(内部实现细节)等。通过封装可以增强数据的安全性,避免外部随意访问和篡改对象内部的数据,同时让代码的使用更加简单清晰,不同部分之间的耦合性降低。
继承
继承允许创建的新类(子类)基于已有的类(父类)来构建,子类会自动获得父类的属性和方法,并且还可以根据自身需求添加新的属性和方法或者重写父类的方法。例如,在动物分类体系中,“哺乳动物”类继承“动物”类,它就拥有了动物类的基本属性如“有生命”等,在此基础上“哺乳动物”类又可以定义自身特有的属性如“胎生”等。继承提高了代码的复用性,减少了重复代码的编写,也有助于构建更合理、有层次的类体系结构。
多态
多态意味着同一个操作作用在不同的对象上,可以有不同的解释和执行方式。比如在图形绘制系统中,有“圆形”“矩形”等不同图形类,它们都有“绘制”这个方法,但具体绘制圆形和绘制矩形的实现过程不同(即执行方式不一样)。多态让程序可以根据对象的实际类型灵活调用相应的方法,增强了程序的扩展性和灵活性,使得代码能更好地应对多种变化情况。
数组:
1.一维数组
一维数组是编程中的一种基础数据结构,用于存储相同类型的多个元素。
声明一维数组
在C语言中,声明一维数组的一般形式是:
类型名 数组名[数组大小];
其中,“类型名”是数组中元素的数据类型,如int、float、char等;“数组名”是你为数组起的名字,用于在程序中引用数组;“数组大小”是数组中可以存储的元素数量。
初始化一维数组
在声明数组的同时,可以对数组进行初始化,即给数组的元素赋初始值。初始化可以是静态的(在声明时指定),也可以是动态的(在声明后通过循环或个别赋值)。
静态初始化
动态初始化
注意:不可以在未初始化时使用数组(即使不知道具体的数值,也要尝试赋予范围值)
访问一维数组元素
数组的元素通过索引来访问,索引从0开始。例如,要访问上面声明的numbers数组的第一个元素,可以使用numbers[0]
,number代表首地址,从首地址开始访问数组。
数组的大小
可以使用sizeof运算符来获取数组的大小(以元素数量计):
int size = sizeof(numbers) / sizeof(numbers[0]);
这将给出数组numbers中的元素数量。
一维数组的应用
一维数组常用于存储一系列有序的数据,例如学生的成绩、物品的价格列表、统计数据等。它们也可以用于实现简单的数据结构,如栈和队列。
注意事项
数组的索引是从0开始的,所以一个包含n个元素的数组,其索引范围是从0到n-1。
在访问数组元素时,必须确保索引在数组的范围内,否则会导致越界错误,这可能是未定义行为,甚至可能导致程序崩溃。
在C语言中,数组需要预先指定大小,一旦声明,其大小就不能改变。
2.多维数组
多维数组是数组的数组,它可以存储更复杂的数据结构,如矩阵、表格或任何需要在多个维度上索引的数据。在C语言中,多维数组通常用于存储和处理矩阵数据,或者作为其他数据结构(如图像处理中的像素数组)的基础。
声明多维数组
在C语言中,声明多维数组的一般形式是:
类型名 数组名[维度1大小][维度2大小]...[维度N大小];
其中,“类型名”是数组中元素的数据类型,“数组名”是数组的名称,“维度1大小”、“维度2大小”等是各个维度上数组的大小。
例如,声明一个2x3的二维数组(可以看作是一个有2行3列的矩阵):
int matrix[2][3];
初始化多维数组
多维数组可以在声明时进行初始化。初始化时,最内层的数组可以指定具体的值,而外层的数组大小可以省略,编译器会根据初始化的值自动计算大小。
例如,初始化上述2x3的二维数组:
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
这表示第一行有三个元素1, 2, 3,第二行有三个元素4, 5, 6。
二维数组:
注意:定义时要加上列数,可以不加行数;二维数组往往需要两层及以上循环来操作
3.指针
指针是C语言中一个非常核心和强大的概念。它是一个变量,其存储的值是另一个变量的内存地址。通过指针,程序可以直接访问和操作内存,这为程序设计提供了极大的灵活性。以下是指针的一些基本概念和用法:
指针的声明
声明一个指针的一般形式是:
类型名 指针变量名;
其中,“类型名”是指针指向的变量的数据类型,“”表示这是一个指针,“指针变量名”是为指针变量起的名字。
例如,声明一个指向整数的指针:
int *ptr;
指针的初始化
指针变量声明后,通常需要被初始化为某个变量的地址,或者初始化为NULL(表示指针不指向任何东西)。
例如:
int var = 10;int ptr = &var; // ptr现在指向var的地址
指针的解引用
通过在指针前加上“”操作符,可以访问指针指向的内存地址上存储的值,这称为指针的解引用。
例如:
int value = *ptr; // value现在等于ptr指向的值,即var的值10
指针的算术
指针支持加法和减法运算,但只能对同类型的指针进行。对指针进行加法或减法运算会根据指针指向的数据类型的大小来移动指针。
例如:
int arr[5] = {1, 2, 3, 4, 5};int *ptr = arr; // ptr指向数组的第一个元素
ptr++; // ptr现在指向数组的第二个元素,即指向2
指针与数组
指针和数组在C语言中紧密相关。实际上,数组名在大多数情况下可以被看作是指向数组第一个元素的指针。
例如:
int arr[5];int *ptr = arr; // ptr指向数组arr的第一个元素
指针与函数
指针在函数参数传递中也非常有用,特别是当需要在函数内部修改变量的值,或者传递大型数据结构时。通过传递指针,函数可以直接修改调用者的数据,而不是数据的副本。
指针数组和数组指针
指针数组是存储指针的数组,而数组指针是指向数组的指针。这两个概念虽然听起来相似,但用途和语法有所不同。
指针的安全
指针的使用需要小心,因为不当的指针操作可能导致程序崩溃或安全问题。例如,解引用未初始化的指针、访问已经被释放的内存、越界访问等都是常见的错误。
指针的应用
指针在C语言中有广泛的应用,包括动态内存管理、字符串操作、函数参数传递、实现数据结构(如链表、树等)等。
指针是C语言中一个非常强大的工具,但同时也需要程序员有良好的内存管理意识和技巧。正确使用指针可以提高程序的效率和灵活性,但错误的使用也可能导致严重的问题。
问题及解决: