当前位置: 首页 > news >正文

初识C语言—常见关键字

变量的命名最好有意义

名字必须是字母,数字,下划线组成,不能有特殊字符,同时不能以数字开头

变量名不能是关键字

typedef---类型定义,类型重命名

#include <stdio.h>typedef unsigned int uint;
//将unsigned int类型重定义为uinttypedef struct Node{int data;struct Node* next;
}Node;
//将struct Node类型重定义为Nodeint main()
{unsigned int num1 = 0;uint num2 = 1;struct Node n1;Node n2;return 0;
}

#include <stdio.h>void test(){int a = 0;a++;printf("%d\n",a);
}int main()
{int i = 0;while(i < 5){test();i++;}return 0;
}

用static修饰变量a

#include <stdio.h>void test(){static int a = 0;a++;printf("%d\n",a);
}int main()
{int i = 0;while(i < 5){test();i++;}return 0;
}

        static修饰局部变量的时候,局部变量出了作用域不销毁。本质上,static修饰局部变量的时候改变了变量的存储位置,影响了变量的生命周期,生命周期变长,和程序的生命周期一样。

        这一句没有对应的汇编代码

        (前面的static可以理解为固定使其不执行,即为静态,第一次创建后不会再重新创建变量并初始化,局部变量没了创建和销毁过程,每次使用的变量都是上次存起来的)

        静态变量在编译期间就已经分配好了空间。

        extern—声明外部符号(告诉编译器我在这个项目别的文件里定义了一个符号,你自己去找吧)

        编译,链接—>可执行程序

        全局变量是具有外部链接属性的

        static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用这个全局变量了。我们在使用的时候就感觉作用域变小了,一定程度上来说可以保障安全性。

        一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用了。

电脑上的存储设备都有哪些?

寄存器(集成到cpu上)

高速缓存(cache)

内存

硬盘

        一开始的计算机,对速度要求没那么高,CPU和内存交换数据,后面随着计算机的发展,对速度的要求越来越高,内存把需要的数据调到高速缓存,调到寄存器,再和CPU进行数据交换,满足速度的要求。

#define定义宏

#define ADD(x,y) ((x)+(y))int main()
{int a = 1;int b = 2;int sum = ADD(a,b);printf("%d\n",sum);return 0;
}

        宏就是完成替换

        continue关键字不能用在switch语句里,用在循环里,能用在switch语句里的关键字有break,default,case。

        define不是关键字,是预处理指令。

相关文章:

  • NLog条件配置——实现将包含某个特定字符串日志写入指定文件
  • 蓝桥杯备战刷题three(自用)
  • MapStruct 教程
  • 【Java面试题】SpringBoot与Spring的区别
  • Programming Abstractions in C阅读笔记:p308-p311
  • 暗九之凶险,更甚于明九
  • K8S部署postgresql
  • Node.js_基础知识(CommonJS模块化)
  • Hololens 2应用开发系列(1)——使用MRTK在Unity中设置混合现实场景并进行程序模拟
  • 23端口登录的Telnet命令+传输协议FTP命令
  • Django 表单
  • 【Git】深入理解 Git 分支合并操作:git merge dev 命令详解
  • 2024年,智慧文旅领航新时代,重塑旅行体验的未来篇章!
  • oppo手机备忘录记录怎么转移到华为手机?
  • wordpress 开源主题
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • angular2开源库收集
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java编程基础24——递归练习
  • jdbc就是这么简单
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • node和express搭建代理服务器(源码)
  • python docx文档转html页面
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • unity如何实现一个固定宽度的orthagraphic相机
  • webpack4 一点通
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 高性能JavaScript阅读简记(三)
  • 缓存与缓冲
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 扑朔迷离的属性和特性【彻底弄清】
  • 什么软件可以剪辑音乐?
  • 说说动画卡顿的解决方案
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • ​flutter 代码混淆
  • ​比特币大跌的 2 个原因
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (3)选择元素——(17)练习(Exercises)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C++17) std算法之执行策略 execution
  • (分类)KNN算法- 参数调优
  • (译)2019年前端性能优化清单 — 下篇
  • (原)Matlab的svmtrain和svmclassify
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .net 后台导出excel ,word
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET轻量级ORM组件Dapper葵花宝典
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Assignment] C++1