生产实习-光电2102杜正扬C语言项目2024.9.2日志

收获总结:

缺少的能力:经验不足,C语言基础薄弱,知识储备欠佳。

学习收获:基本的原码补码,内存的概念,以及数据的理解。

第一次课:
原码与补码(3)
内存基本概念(6.1)
软件运行于内存的管理之间的关系(6.2)
数据类型(6.3)
(补)汉字在计算机中的表达方式(4)

第二次课:
垃圾数据(6.2)
不同C编译器对垃圾数据的处理是不同的;在DEV C下,局部变量的垃圾数据值为0。但是,这不可以作为对局部变量赋初值的一般性操作对待!

实训内容:

上午8:30-12:00

原码定义:

为了表达负数,而引入原码的概念;令n位二进制数中的最高位为符号位,且0表示+(正号)1表示-(负号);用剩余的n-1位表示该数绝对值,即形成原码。

令n位二进制数中的最高位为符号位,且0表示+(正号)1表示-(负号);用剩余的n-1位表示该数绝对值,即形成原码。

x的补码,当x大于等于0时,(x)补= (x)原 = x;当x小于0时,(x)补是在(x)原的基础上,“除符号位外,按位取反,末位加1”。

(-3)补(8位)

=(1000 0011)原

=(1111 1100 + 1)补

=(1111 1101)补

内存基本概念(6.1)

内存的基本概念:

1、内存是由多个字节组成的一维、线性、连续存储空间;

2、字节是计算机内存、外存分配存储空间的基本单位;

3、对于内存中的众多字节,计算机系统是通过编号进行管理的;编号与字节是一一对应关系;编号遵循以前讲述过的3个基本原则;

4、参与编号的二进制位数,直接决定了计算机系统能够直接管理(访问)的内存空间大小:

软件运行于内存的管理之间的关系(6.2)

1、软件必须先调入内存方可执行;

2、OS(操作系统)是计算机资源管理者,内存的使用也是在OS的管理下进行的;

3、软件在执行前,需先向OS申请存储空间;在有足够内存空间时,OS将分

配一段空间供软件使用;

4、软件在运行过程中,其所分配得到的存储空间不再分配给其它软件使用;

5、软件只能在其所分配得到的存储空间中进行操作,不能对其它空间操作,如果出现操作不属于该软件的空间,OS会认为出现了“非法内存访问”错误,这是一种非常严重的错误,发生这种错误的软件将被OS强行停止运行;

6、软件在运行完毕后,将提请OS回收其所占用的存储空间(但不会清空该空间内容);OS会回收该空间以便再次分配给其它软件使用;这说明内存是重复使用方式;

7、上述说明了:我们的软件所申请得到的空间,往往不是“一无所有”,常常是已经有软件曾经运行过,使用过该空间的;这些空间里存在着曾经运行过的软件的残留数据,这些数据被称为:“垃圾数据”!

数据类型(6.3)

数据类型有两个要素:1、识别方式;2、长度;

数据类型的两个要素必须都非常明确且确定,若有一项不清晰,则,就不能构成有效的数据类型!

垃圾数据(6.2)

不同C编译器对垃圾数据的处理是不同的;在DEV C下,局部变量的垃圾数据值为0。但是,这不可以作为对局部变量赋初值的一般性操作对待!

思考及作业:
1、指针与内存、数据类型、变量之间的关系;
2、尝试用指针访问数组元素,比如:用指针遍历一个整型(元素已赋值)数组元素,即,输出一个数组的所有元素的值。
请将“内存映像图”抄画至少一遍。
对第一个程序的思考过程作一个总结(10名学生找最高分)。
将课堂例题自己编写一遍。

解答:

一、指针与内存、数据类型、变量之间的关系;

1. 变量

变量是存储数据的容器,它们具有数据类型和名称。数据类型决定了变量可以存储的数据类型以及数据占用的内存大小。例如,在C语言中,int类型变量用于存储整数,float类型变量用于存储浮点数。

2. 数据类型

数据类型定义了变量的性质和可以存储的值的范围。每种数据类型都对应着内存中一定大小的存储区域。例如,在大多数现代系统上,int类型通常占用4个字节(32位),而float类型也占用4个字节。数据类型决定了编译器如何解释存储在内存中的位(bit)序列。

3. 内存

内存是计算机中用于存储数据的硬件部分,由一系列字节(通常是8位)组成。程序通过地址来访问内存中的特定位置。每个变量在内存中都有一个唯一的地址,用于标识其存储位置。

4. 指针

指针是一种特殊类型的变量,它存储的不是数据本身,而是内存中某个数据(即变量)的地址。换句话说,指针指向内存中的一个位置。通过使用指针,程序可以直接访问和操作内存中的值,而无需通过变量的名称。

指针与变量、数据类型、内存的关系

与变量的关系:指针可以指向一个变量的内存地址,允许你通过指针来访问或修改该变量的值。这种机制使得对内存的直接操作成为可能,但同时也增加了出错的风险。

与数据类型的关系:指针本身也有数据类型,这决定了它指向的数据类型以及它如何解释存储在该地址的数据。例如,int*类型的指针指向一个整数类型的值,而float*类型的指针指向一个浮点数类型的值。

与内存的关系:指针是访问和操作内存的一种工具。通过指针,程序可以读取或写入特定内存地址的值。这使得程序员能够编写更高效的代码,同时也需要更仔细地管理内存,以避免诸如野指针、内存泄漏等问题。

二、

#include <stdio.h> int main() { // 定义一个整型数组并初始化 int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的元素个数 // 定义一个整型指针,指向数组的第一个元素 int *ptr = arr; // 使用指针遍历数组 for (int i = 0; i < size; i++) { // 打印当前指针指向的值 printf("%d ", *(ptr + i)); // 或者等价地,使用指针递增来遍历数组 // printf("%d ", *ptr++); // 注意:如果使用 ptr++,则上面的 for 循环中的 i 将不再需要, // 但你需要另外的方式来控制循环结束(例如,使用 while 循环和额外的条件检查)。 } // 如果使用了 ptr++ 来遍历,这里 ptr 将指向数组外的下一个位置。 // 如果需要再次从头开始遍历数组,你需要将 ptr 重新指向 arr。 printf("\n"); return 0; }

三、对第一个程序的思考过程作一个总结(10名学生找最高分)。

第一步,需要先记住当前值;第二步,记住最大值,将当前值和已给的数据中最大值进行比较,得出最新的最大值;第三步,记录好次数10次,依次比较大小,最后得到最高分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值