【小白学编程5】我的房子在哪儿?理解类型和变量

af86b383b42b302b55ea2f0315be6e4d.jpeg

我的房子在哪儿?

理解类型和变量

- 《小白学编程》系列第五讲 -

36dc98284a7e5f2efc61adfcdd934d3a.png

《小白学编程》系列课程过半,为满足更多同学的时间需求,课程直播时间改为了晚上八点。

6a2d1e10a7a107c0ccb61dec481c8290.png

昨晚八点准时开始课程的第五讲,其主题为:“我的房子在哪儿?理解类型和变量”。透过标题就可以感受到这节课的内容设计非常巧妙。同学们听课之前可能都抱着“房子?类型?变量?这三者的联系在哪儿?”这样的疑惑。我们带着这些疑惑去本讲课程中寻找答案。

 妙喻 

d135f2443ab10ee6a06fbbd62bf41647.png

无论是我们人类,还是自然界的各类动物,都有栖身之处——我们的房子。在C语言世界里,每个变量也有自己的房子(住所),房子的大小就是类型的大小,就是对象的大小。

4b2c5a85496bb9afd3273c79d8327463.png

张老师把数据类型比作房子,把变量看作我们每个人或自然界的任何一种动物,通过这样巧妙的比喻把C语言世界中晦涩难懂的原理给大家通俗易懂地讲解透彻。这样的妙喻在完整的课程中比比皆是,观看课程回放,跟随张老师畅游C语言世界……

在讲解C语言里最难的指针概念时,张老师使用家庭地址作类比,特别引用了“我找你家去”的段子。

adc9d6084ef2de2917c28064ae000529.png

 妙问 

直播时间更加契合大家的空闲时间后,直播间的同学也多了起来。很多同学也提出了极妙的问题。

例如:

为什么是const char* name?

而不是int* name?

 妙答 

秉承着一贯深入浅出的授课风格,张老师对弹幕提出的问题给予了生动有趣易理解的回答:因为大小不一样。如同每个人、每个小动物住的房子大小不一,要表达的英文字符有多长,我们就要给它多大的房子。一只猪需要足够大的猪圈,一只鸡需用的空间就小很多,一只小白鼠则需要一个小箱子即可。

cb899b69ad3bc8b0d5f0620c424b1afa.png

那表达26个英文字母需要多大的房子呢?

一个英文字符占8 bit,即一个字节;char数据类型也占一个字节,所以要把name定义为char类型,不能定义为int类型。

那为什么不能定义为int*呢?

因为那样的话,就相当于给一只小白鼠建了一个猪圈。一个int占32 bit,一个英文字符仅占8 bit,明显地,把name定义为int*会造成空间的浪费。另外,计算机语言发展到今天,这也已经变成一种约定俗成的规则。

第六讲预告

e95b94bb7cb3d7b5fe8b51daa82eacb0.png

流程控制,指挥CPU行走

课程要点:条件执行,分支,循环。

直播时间:2023/07/27 周四 20:00-21:30

直播间链接:http://live.bilibili.com/24576892

b4fa31ce1659ee29a70d02ed9342bdd5.png

微信群二维码

该二维码8月2日前有效

【盛格塾】

正心诚意,格物致知

人文情怀审视软件,以软件技术改变人生

99c324ea3d6d704baed5ce331f6759a0.png

格友公众号

0f5cecc86d03eabb2de1509eb861f8a5.png

盛格塾小程序

扫描上方二维码或在微信中搜索“盛格塾”小程序

可以文章和有声读物

往期推荐

软件工程师的“硬功夫”

LINUX平台高级调试和优化(上海站)

有一个驱动叫刘姥姥

盛格塾暑期公益课程《学活LINUX》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习 C语言第二天 :C语言数据类型和变量(下)

目录: 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了,类型是用来创建变量的。 变量是什么呢?在C语言当中不经常变的量称为常量,经常…

【雕爷学编程】Arduino动手做(95)---GY9960手势传感器模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

直播平台源码开发提高直播质量的关键:视频编码和解码技术

在互联网日益发展的今天,直播平台成为人们互联网生活的主力军,直播平台功能的多样化与智能化使我们的生活有了极大地改变,比如短视频功能,它让我们既可以随时随地去发布自己所拍摄到的东西让世界各地的用户看到,也能让…

Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

最近想写写C,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C轻量级开发环境。 具体搭建步骤 1. 下载并安…

国产数据库-内核特性-gbase8a智能索引

国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库,有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一,包含基于列的统计信息,可以有效过滤数据,大幅降低数据库磁盘IO&#…

数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 算法概述 图示 快速排序和归并排序有一些相似,都是用到了分而治之的思想: 伪代码 通过初步的认识,我们能够知道快速排序算法最好的情况应该是: 每…

TCP协议如何实现可靠传输

TCP最主要的特点 TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。 TCP最主要的特点: TCP是面向连接的输出层协议 每一条…

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物,从在线银行到在线医疗,Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭…

OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.13 的环境中验证 文章目录 技术架构部署 Distributed Tracing 运行环境安装测试应用并进行观测跟踪参考 说明: 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在…

WPF快速开发(2):图标库知识点

文章目录 前言知识点windows资源Style:样式Setter:属性继承关系 Trigger:触发器 WPF层级划分数据绑定声明数据上下文绑定数据模板 前言 图标资源下载 iconfont 知识点 windows资源 Window.Resources:资源位置声明X:Key:资源Id,用于前端的…

2023年JAVA最新面试题

2023年JAVA最新面试题 1 JavaWeb基础1.1 HashMap的底层实现原理?1.2 HashMap 和 HashTable的异同?1.5 Collection 和 Collections的区别?1.6 Collection接口的两种区别1.7 ArrayList、LinkedList、Vector者的异同?1.8 String、Str…

前端JS 展示上传图片缩略图(本地图片读取)

需求: 点击上传图片按钮,选择图片以后,不请求后端接口,直接将图片展示在缩略图中。 解决方案: 使用 FileReader 和 FileReader 中的 readAsDataURL 方法。 第一步 从input[type“file”] (上传文件标签) 里面拿到fil…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂(02)(20230725) 第四堂继续! 考点3:SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

C语言每日一题:6.移除元素+合并两个有序数组。

第一题:移除元素 思路一: 一:暴力查找的方法: 1.找到对应val值的下标,返回数组的下标。 2.删除对应的下标,从前向后用后面覆盖前面。当后一个是数组最后一个数值是就赋值结束了(注意数组越界的问…

width: calc(~“100% - 267px“);动态css 调样式

.result-filtering {color: #8b8b8b;display: flex;// width: 82.6%;width: calc(~"100% - 267px");}

5.python设计模式【单例模式】

内容:保证一个类只有一个实例,并提供一个访问它的全局访问点角色: 单例(Singleton) UML图 举个例子: 需求:一个类只能实例化一个对象,不能实例化多个对象 from abc import abstract…

RocketMQ教程-(5)-功能特性-事务消息

事务消息为 Apache RocketMQ 中的高级特性消息,本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。 事务消息为 Apache RocketMQ 中的高级特性消息,本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。…

数据库触发器简介——修改数据的触发器、删除数据的触发器

1.修改数据的触发器 修改数据的触发器 create trigger tb_user_update_triggerafter update on tb_user for each row begininsert int user_logs(id,operation,operate_time,operate_id,operate_params)VALUES(null,update,now(),new.id,concat(更新之前的数据:i…

如何设置Axure中文版 Mac系统下axurerp10怎么设置成中文

有许多小伙伴肯定想知道axure rp 10怎么转换为中文版,接下来就为大家带来最详细的汉化教程,大家可以根据教程一步一步操作,保证可以汉化成功! 准备工作 安装好axurerp10 axurerp10汉化包 百度网盘链接: 百度网盘 请输入提取码 …

PostgreSQL实战-数据库迁移部署

PostgreSQL实战-数据库迁移部署 介绍 根据项目需求,我们需要将现有的PostgreSQL数据库重新部署到新的服务器上。由于项目本身就是基于PostgreSQL数据库构建的,因此数据库迁移将变得十分便捷。接下来,我将简要介绍我们的迁移步骤。 迁移步骤…