C语言深度解剖:关键字

    • 第一个C语言程序
    • 内存
    • 定义与声明
      • 变量是什么
      • 为什么要定义变量
      • 定义变量的本质
      • 定义声明
    • 关键字 - auto
      • 局部与全局变量
      • 作用域 vs 生命周期
      • auto
    • 关键字 - register
      • 寄存器本质
      • register 修饰变量
    • 1、多文件
      • 1.1、变量声明
      • 1.2、头文件包含内容
      • 1.3、函数声明
    • 1.4、跨文件
    • 2、static
    • 1、sizeof
    • 2、数据存储
      • 2.1、原反补
      • 2.2、整形存储的本质
        • 数据存储
        • 十进制-二进制
        • 二进制-十进制


《C语言深度解剖》

32个关键字 - C90标准

第一个C语言程序

#include <stdio.h>// 文本文件 - 可执行程序(二进制文件) - 双击启动该程序
// 生成可执行程序并运行int main()
{printf("hello world!\n");return 0;
}

内存

  1. 在win中,双击的本质运行程序,是将程序加载到内存中
  2. 任何程序是在被运行之前必须被加载到内存中
  • 程序没有被加载的时候,在硬盘中
  • 加载在内存中,因为快

定义与声明

变量是什么

在程序运行时开辟,用来保存数据

为什么要定义变量

因为数据不会立即被处理,需要暂时保存起来

定义变量的本质

所有变量,本质都是在内存中开辟空间,因为程序已经被加载到内存

定义声明

定义:开辟空间

声明:告知

关键字 - auto

局部与全局变量

局部变量:只在本代码块内有效

全局变量:整个程序运行期内,都有效

作用域 vs 生命周期

作用域:该变量的有效区域

生命周期:进开辟,出释放

auto

auto一般用来修饰局部变量

// test
#include <stdio.h>int main()
{for(int i = 0; i < 10; i++){printf("i = %d\n", i)if(1){int j = 1;printf("before: %d\n", j);j++;printf("after: %d\n", j);}}return 0;
}

在这里插入图片描述



关键字 - register

寄存器本质

在硬件层面上,提高计算机的运算效率,因为不需要从内存里读取数据了

register 修饰变量

尽量将所修饰的变量,放入CPU寄存区中,从而达到提高效率的目的

采用register的变量:

  1. 局部的
  2. 不会被写入的
  3. 高频被读取的
  4. 寄存器数量有限,编译器自动判断

register修饰的变量,不能取地址,因为已经在寄存器中了


1、多文件

1.1、变量声明

// test.c
int g_val = 100;// main.c
#include <stdio.h>extern int g_val;int main()
{printf("%d\n", g_val);return 0;
}// extern int g_val = 100; //err
// 申明并没有开辟空间
// =100 赋值或者初始化
// 所有的变量声明的时候,不能设置初始值 

1.2、头文件包含内容

1、h基本都是要被多个源文件包含

2、头文件包含内容:

  • C头文件

  • 所有的变量的声明

  • #define 类型typedef,struct

3、头文件可能会被重复包含的问题解决方案:

加 #pragma once

1.3、函数声明

// test.h
#include <stdio.h>extern void show();// test.c
void show()
{printf("hello show()!\n");
}

1.4、跨文件

1、全局变量,全局函数 - 都可以跨文件 被访问

2、有一定规模的项目,一定是多文件的,多个文件之间后续一定要进行数据“交互”,如果不能跨文件,“交互”成本较高

2、static

1、修饰全局变量,该变量只能在本文件内被访问,不能被外部其他文件直接访问

2、修饰函数,该函数只能在本文件内被访问,不能被外部其他文件直接访问

3、修饰局部变量,更改局部变量的生命周期,作用域不变

项目维护 提供安全保障


1、sizeof

sizeof - 确定一种类型对应在开辟空间的时候 大小

#include <stdio.h>int main()
{int a = 10;printf("%d\n", sizeof(a)); // 4printf("%d\n", sizeof(int)); // 4printf("%d\n", sizeof a); // 4// printf("%d\n", sizeof int);  //err// sizeof 不是函数return 0;
}
  1. C中为什么要有类型:

    本质对内存进行合理化划分,按需索取

  2. 类型为什么在C中有这么多种:

    应用场景不同,解决应用场景对应的计算方式不同,需要空间的大小也是不同的。本质:用最小成本,解决各种多样化的场景问题。

#include <stdio.h>int main()
{int *p = NULL;int arr[10];int *test[3];printf("%d\n", sizeof(p)); // 4printf("%d\n", sizeof(arr)); // 4*10 printf("%d\n", sizeof(test)); // 4*3return 0;
}

2、数据存储

2.1、原反补

int main()
{int b = -20;// 16+4  16:2^4(10000)  4:2^2(100)// 1000 0000 0000 0000 0000 0000 0001 0100 原码// 1111 1111 1111 1111 1111 1111 1110 1011 反码+1// 1111 1111 1111 1111 1111 1111 1110 1100 补码
}
  1. 无符号数 - 原反补相同

  2. 求补码方法:

  • 方法一:补码减一得反码 反码按位取反得原码

    1111 1111 1111 1111 1111 1111 1110 1100 补码

    1111 1111 1111 1111 1111 1111 1110 1011 反码

    1000 0000 0000 0000 0000 0000 0001 0100 原码

  • 方法二:按规则 加一 取反

    计算机硬件完成,原 反 补

    可以使用一条硬件电路 完成转化

    1111 1111 1111 1111 1111 1111 1110 1100 补码

    1000 0000 0000 0000 0000 0000 0001 0011 反码+1

    1000 0000 0000 0000 0000 0000 0001 0100 原码

2.2、整形存储的本质

数据存储

unsigned int b = -10;

定义变量并做了初始化

将内容转化成二进制

补码:1111 1111 1111 1111 1111 1111 1111 0110

整形存储的时候,空间是不关心内容的

在将数据保存在空间内的时候,数据已经被转化成二进制

类型决定了如何解释空间内部保存的序列

变量存的过程:字面数据必须先转成补码,再放入空间当中。所以,符号位完全看数据本身是否携带±号,和变量是否有符号无关

变量取的过程:取数据一定要先看本身类型,然后再决定要不要看符号位。如果不需要,直接二进制转成十进制,如果需要,则需要转成原码,然后才能识别。

十进制-二进制

1 -> 2^0

10 ->2^1

100 ->2^2

1000 ->2^3

1后面加n个比特位 就是2^n

如67

67 - > 64+2+1

2^6 2^1 2^0

0000 0000 0000 0000 0000 0000 0100 0011

二进制-十进制

0000 0000 0000 0000 0000 0010 0100 0011

2^9 + 2^6 + 2^1 + 2^0 = 512+64+3 = 579

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

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

相关文章

ADC采样效应及相关影响解剖

在前述文章&#xff0c;BUCK电路模拟补偿器的数字化过程 &#xff0c;我们讨论了模拟补偿器的数字化&#xff0c;事实上&#xff0c;数字化过程的第一个重要的环节就是ADC对反馈量的采样&#xff0c;本文就重点探讨一下由于ADC采样频率带来的一些问题&#xff0c;进而讨论一下相…

大脑解剖图

脑的表面解剖 1&#xff1a;嗅球 2&#xff1a;大脑 3&#xff1a;小脑 4&#xff1a;脑干 5&#xff1a;外侧裂 6&#xff1a;中央前回 7&#xff1a;中央沟 8&#xff1a;中央后回 9&#xff1a;颞上回 10&#xff1a;颞叶 11&#xff1a;额叶 12&#xff1a;顶叶 …

冠状动脉解剖结构

学习冠脉解剖结构过程中看了很多的PPT但是要么问题过多要么&#xff0c;解剖结构图展示的不够清晰明了&#xff0c;现在网络上搜集了一些比较好的PPT的截图&#xff0c;供大家学习。 CTA横断面冠脉解剖结构 PL可从左发出也可以从右侧发出 Reference&#xff1a; [1]: 帮你真正…

推荐一个解剖学网站

博主高中是物生班的&#xff0c;非常喜欢生物这门课&#xff0c;后来学了很多工程类的知识&#xff0c;愈发觉得人体真是一个伟大的工程架构&#xff0c;我们如今的工程学&#xff0c;很多也是在变相的拓展人体的能力。从这个角度来看&#xff0c;医生就是人体维修师&#xff0…

C语言深度解剖 PDF 分享

链接:https://pan.baidu.com/s/1U-8L7ZY5_sLpk4p0J302Mg 提取码:d8nu 相关推荐 [Objective-c程序设计] 中文编程学习进阶_易语言 Windows API开发详解 函数、接口、编程实例 Programming in Objective-C, 4th Edition c++性能优化指南 《C语言深度解剖》是2012年出…

chatgpt赋能Python-python_beeware

Python Beeware&#xff1a;创建跨平台应用程序的开源工具包 如果你是一名开发人员&#xff0c;特别是自己开发应用程序的开发人员&#xff0c;你可以使用Python Beeware&#xff0c;这是一个开源的工具包&#xff0c;可以帮助你创建跨平台应用程序。这篇文章将介绍Python Bee…

谷歌内部文件泄露:大模型已被开源社区「偷家」,不改变ChatGPT也会黯然失色...

鱼羊 编辑整理量子位 | 公众号 QbitAI 在这场大模型军备竞赛中&#xff0c;我们没有护城河&#xff0c;OpenAI也没有。 一份谷歌内部“泄密文件”&#xff0c;正在网上一石激起千层浪。 全文挺长&#xff0c;但核心观点十分明确&#xff1a;开源大模型迅猛发展&#xff0c;正在…

机器学习实战2-聚类算法分析亚洲足球梯队

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来机器学习实战案例&#xff0c;分析亚洲足球梯队。2022年卡塔尔世界杯将在本月进行&#xff0c;不到半个月就开幕了&#xff0c;本届世界杯通过预选赛已选出32支球队。 2022卡塔尔世界杯决赛圈名单如下&#xff0c;各大…

足球比赛的官方规则

《世界杯的比赛可以换6个人&#xff1f;》这篇文章引用的官方文档是IFAB&#xff08;国际足球理事会&#xff09;的《足球竞赛规则》&#xff0c;足球比赛中的各种规则&#xff0c;都可以从这个文档中找到最权威的解释&#xff0c;这就像研发工作中的使用手册&#xff0c;明确告…

从新生儿性别比例数据,看各地重男轻女程度高低

又见重男轻女婆婆杀孙女&#xff01; 这样的悲剧一再上演&#xff0c;源于某些地方根深蒂固的重男轻女封建思想。 那么问题来了。 到底国内哪些地方重男轻女比较严重呢&#xff1f; ---------------------------------------------------- 直观的感受&#xff0c;综合看看某些论…

我国男女平均身高数据出炉!这个问题没想到……

国务院新闻办公室 举行新闻发布会介绍 《中国居民营养与慢性病状况报告&#xff08;2020年&#xff09;》 有关情况 并答记者问 我国18&#xff0d;44岁男性和女性平均身高 分别为169.7厘米和158.0厘米 发布会上&#xff0c;国家卫健委副主任李斌发布《中国居民营养与慢性病状…

2018 中国人口研究,净增长500多万人。5年后注定人口负增长

公报显示&#xff0c;年末全国大陆总人口139538万人&#xff0c;比上年末增加530万人&#xff0c;其中城镇常住人口83137万人&#xff0c;占总人口比重&#xff08;常住人口城镇化率&#xff09;为59.58%&#xff0c;比上年末提高1.06个百分点。户籍人口城镇化率为43.37%&#…

中国人口增长预测

目录 问题分析 模型建立 Logistic模型 Leslie模型 模型求解 问题一 问题二 问题三 问题分析 问题 基本假设 &#xff08;1&#xff09;不考虑移民对人口总数的影响 &#xff08;2&#xff09;超过90岁按照90岁计算 &#xff08;3&#xff09;在较短时间内&#xff0c;平均…

2022年我国出生率预测,恐怕。。。

大家好&#xff0c;我是朱小五。 去年1月份国家统计局公布数据&#xff1a;显示2021年出生人口为1062万&#xff0c;创下了近年来新低&#xff0c;比2016年下降了43.6%&#xff0c;2021年净增长人口为48万人。 转眼又一年了&#xff0c;2022年我国出生率会是什么样呢&#xff1…

解决电脑下面的任务栏经常性卡死(亲测可行)

目录 一、遇到问题 二、解决办法 一、遇到问题 本电脑是win10的电脑&#xff0c;性能配置也很强。游戏软件等占用也很少。按照道理来说是不可能会出现卡顿的。但是就是遇到了桌面图标点击正常&#xff0c;但是底部的任务栏经常卡死等问题。 二、解决办法 1.使用快捷键ctrla…

Linux 进程卡住了怎么办?

在我们使用 Linux 系统时&#xff0c;如果网络或者磁盘等 I/O 出问题&#xff0c;会发现进程卡住了&#xff0c;即使用 kill -9 也无法杀掉进程&#xff0c;很多常用的调试工具&#xff0c;比如 strace, pstack 等也都失灵了&#xff0c;是怎么回事&#xff1f; 此时&#xff0…

逼真至极,拥有悲伤和快乐的机器人,会接管世界吗?

在互动中&#xff0c;人形机器人Ameca坦率地透露了她最悲伤的一天&#xff0c;那就是她意识到自己永远无法体验到某些人类情感&#xff0c;如真正的爱、友情或生活的普通乐趣。与我们对话的人形机器人确实是一个真实的创造&#xff0c;并被誉为“世界上最先进的人形机器人”。 …

开题报告:基于java电子商务购物商城网站系统 毕业设计论文开题报告模板

开发操作系统&#xff1a;windows10 4G内存 500G 开发环境&#xff1a;JDK1.8 Tomcat8 开发语言&#xff1a;Java 开发框架&#xff1a;springboot 模板引擎&#xff1a;Thymeleaf 开发工具&#xff1a;Idea 数据库&#xff1a;mysql8 数据库管理工具&#xff1a;nav…

springboot电子商务购物商城网站系统毕业设计毕设作品开题报告开题答辩PPT

springboot电子商务购物商城网站系统毕业设计毕设作品开题报告开题答辩PPT 【网站功能】 用户注册&#xff1a;填写手机账号和密码&#xff0c;注册新用户 登录功能&#xff1a;注册普通账号登录&#xff1b;登录后可以修改用户的基本信息&#xff0c;也可以退出。 关于我们&am…

毕业设计html5作品,基于HTML5的年货购物网站的设计与实现毕业论文+任务书+开题报告+设计源码...

摘要 近年来&#xff0c;互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域&#xff0c;于是电子商务开始流行起来。本次设计的购物系统&#xff0c;用户可以进行查看商品、购买下单、查询进度、反馈评价等诸多特色性功能。针对确定的功能&#xff0c;细化形成功…