学习笔记:C语言的32个关键字

news/2024/7/22 13:10:30/文章来源:https://blog.csdn.net/Liu1013216383/article/details/139114924

一、标准C语言的32个关键字

1、基本数据类型: signed unsigned char int float double short long void
2、构造数据类型: struct union enum
3、数据存储类别: auto static extern register
4、数据优化: const volatile
5、9条基本语句: if else switch case break default while do for return continue goto
6、其它: typedef sizeof

预编译处理符 “#”
> #include
> #define 
> #ifdef
> #ifndef
> #if
> #else
> #else if
> #endif 
等等
1、基本数据类型 
> 1、unsigned :无符号的//用来声明一个无符号的变量。unsigned char var; //var的范围:0~255> 2、signed :有符号的(可以省略不写)//用来声明一个有符号的变量。signed char var; //var的范围:-128~127> 3、char :字符型//用来声明一个字符型变量。//占一个字节空间char var;> 4、int :整型//用来声明一个整型变量。//C51:占两个字节空间,ARM:占四个字节int var; > 5、float :浮点型//用来声明一个浮点型(实型)变量。//最多能表示到7个有效数据位。//占四个字节空间float var;>  6、double :双精度型//用来声明一个双精度实型变量。//最多能表示到15~16个有效数据位。//占四个字节空间 ,有的系统占八个字节double var; > 7、short :短整型//用来声明一个短整型变量。//C51:跟int一样,ARM:占两个字节short var; > 8、long :长整型//用来声明一个长整型变量。//ARM:跟int一样,C51:占四个字节long var; > 9、void :空型//表示一个函数没有返回值,或者无形参。void function(void);
2、构造数据类型 
> 1、struct//用来声明一种结构体类型。struct stu{char sex;int age;float score;struct stu *Next;};struct stu var; > 2、union//用来声明一种共用体类型。//该类型的变量所在空间的大小以其成员占最大的那个为准,//存入该变量中的值以程序中最后存入的数值为当前值union non{char sex;int age;float score;};union non var; > 3、enum//用来声明一种枚举类型。//规定枚举类型的变量,只能在限定的范围内取值//否则,编译会出现警告(达到数据安全的效果)enum em {a = 23,b,c,d = 56,e}; //其中b=24,c=25,e=57enum em var;
3、数据的存储类别 
> 1、auto :自动的(可省略不写)//定义一个局部变量,默认为auto类型的,//当它所在的函数调用结束时,释放内存//使用时才分配内存,用完即释放auto char var; > 2、static :静态的//①定义一个局部变量,该变量在定义时只进行//一次初始化,以后每次调用它所在的函数,其值//都会保持上一次调用的结果,它所在的空间不会//被释放//②被static修饰的全局变量,则只能在它所在的C//源文件中使用,其它文件不能调用,(内部全局变量)//③被static修饰的函数,只能在该函数所在的C源文//件中被调用,其它文件不能调用,(内部函数)static char var;static void function();> 3、extern :外部的//①想要调用别的C源文件中的某一个全局变量,//可以使用该关键字在该文件中修饰声明该变量//即可调用(前提是该变量没有被static修饰)//该类型的变量也是一直占着内存不释放//②想要调用别的C源文件中的某一个函数,//可以使用该关键字在该文件中修饰声明该函数//即可调用(前提是该函数没有被static修饰)extern char var;extern void function();> 4、register :寄存器的//被这个关键字修饰的变量,建议编译器将该变量在//使用时放到CPU内部寄存器中,以提高执行效率//注意:该关键字只是"建议",到底有没有将变量放到//寄存器中无从得知。一般使用在循环次数比较多的//地方。//在使用时才分配内存,用完即释放register long i = 30000;
4、数据优化 
> 1、const :常的//常变量:被const关键字声明的变量,其值不能被改变。//即在声明该变量时必须要初始化该变量。//var本身还是一个变量。(数据安全检测)const char var = 100;char arr[var]; //试图声明一个长度为100的字符型数组//在MDK (ARM)中可以使用常变量来声明数组的长度//在VC++编译环境中也可以。//在C51-keil中不可以使用常变量来声明数组的长度char *const p;//指针变量p不可改变,但是它指向的地址里面的值可变 char const *p; 或 const char *p;//指针变量p可以改变,但是它所指向的地址里面的值不能改变 const char * const p; //p地址不可改变,里面的值也不能变> 2、volatile :随时会改变的//被volatile修饰的变量或寄存器会意想不到地发生改变。//①某些变量或寄存器(如状态寄存器)可能会受硬件影响;//②在多线程任务中,被其它线程修改(共享内存段);//③一个在中断服务中使用到的全局变量//④编译器会对C程序进行优化;//为了保证程序不被优化,保证CPU取到的数据是最新的//(即提醒CPU每次都必须到内存中取出变量当前的值而不//是取cache或者寄存器中的备份),使用该关键字修饰,如:int *p; *p = 1; *p = 2;//编译时,编译器会对上面的语句进行优化,//会直接优化成:int *p; *p = 2;//为了保证上面的语句不被优化,加volatile修饰变量:int * volatile p;
5、9条语句 

四种结构: 

> 1、顺序结构:0条 //声明语句、运算语句、赋值语句等等> 2、选择结构:2条 //多选一①、if -else if -else if ... elseif(表达式1) {语句s;}else if(表达式2) {语句s;}else if(表达式3) {语句s;}else{语句s;}//用法:顺序判断if后的"表达式"是否为真//如果碰到为真的情况,则执行其下面的{}里的"语句"//执行完后,即退出这个"多选一"的结构 ②、switch-case-breakswitch(变量) {case 常量1:语句;...;break;case 常量2:语句;...;break;case 常量3:语句;...;break;default:语句; }//用法:顺序判断"变量"是否与"常量"相等,//如果相等,则执行该常量:后的"语句s",遇到break即跳出//这个结构unsigned char i = 6;unsigned char dat;switch(i){case 3:dat = 5;break;case 5:dat = 34;break;case 6:dat = 99;break;case 7:dat = 56;break;case 6:dat = 100;break;default:dat = 68; //默认执行}//注:如果少了break,则顺序判断i的值与//case后面的常量是否相等,如果相等,则执行其//后面的语句,以后不再判断,再继续执行下面的//每一条case 后面的语句,直到default.//这种用法不使用!> 3、循环结构:3条①、forfor(语句1;语句2;语句3) {语句4;语句...;}//用法:语句1:条件初始化//     语句2:判断语句,判断条件是否成立//     语句3:修改条件语句//先执行语句1,再进行对语句2的判断,如果成立//则执行{}里的语句4...,再执行语句3,在判断//语句2是否依然成立,。当语句2不成立时,结束循环②、whilewhile(表达式) {语句;....;}//用法:先判断“表达式”是否成立,如果成立//则执行{}里的语句,执行完再次判断“表达式”//是否依然成立,成立则继续执行{},不成立则结束//此循环结构。如何来设计一个死循环?两种方法:for(;;)while(1)③、do-whiledo{语句1;...;}while(表达式);//用法:先执行{}里的语句,执行完后,判断//"表达式"是否成立,如果成立,继续执行{};//如果不成立,则结束循环> 4、转移结构:4条①、break//仅用于跳出循环结构//且仅能跳出一层循环结构for(i=10;i>0;i--){t = 10;while(t--){dat++;if(dat == 3)break;//跳出while()结构。} }②、continue//用于终止本次循环,继续从下次循环开始//正式程序中不使用,仅用于调试程序char buf = 10;while(buf--){ a++;b++;continue;//遇到continue则结束这次循环d++; //这条永远都不会执行到 e++; //这条永远都不会执行到 }③、goto//无条件转移 //一般都不建议在大的程序当中使用unsigned char dat=10;while(dat--){ a++;b++;Lable: c++;if(c == 3)goto Lable;//直接跳到Lable标号去 d++;}④、return//用于函数返回,//在函数调用时,遇到return即返回。//如果需要返回某个值,在其后加上返回值。//返回值类型必须和函数类型一致。void function(){char a,b; a++;return; //遇到return即返回调用处b++; //不会被执行return; //不会被执行}
6、其它 
> 1、typedef : 类型重定义typedef unsigned char uchar;//用uchar重新定义unsigned char#define uchar unsigned char//用uchar 替换unsigned char
跟宏定义的区别:①、typedef 是在编译阶段进行定义宏定义是在预编译处理阶段完成展开②、typedef 是类型重新定义,不是简单地替换宏定义只是简单的替换,没有定义typedef unsigned char* M;#define M unsigned char*M p1,p2;//对于typedef来说:p1是指针变量,p2也是//对于宏定义来说:p1是指针变量,p2是普通变量> 2、sizeof//用来求类型所占的字节数int var = 10;char g; g = sizeof(var++);//g = 4;//注意:var++该条语句没有被执行!//()里的语句是不会被执行的。

二、数据类型关键字

1.基本数据类型(5个) 
>  void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果  
>  char:字符型类型数据,属于整型数据的一种 
>  int:整型数据,通常为编译器指定的机器字长 
>  float:单精度浮点型数据,属于浮点数据的一种 
>  double:双精度浮点型数据,属于浮点数据的一种
2. 类型修饰关键字(4个)
>  short:修饰int,短整型数据,可省略被修饰的int  
>  long:修饰int,长整形数据,可省略被修饰的int 
>  signed:修饰整型数据,有符号数据类型  
>  unsigned:修饰整型数据,无符号数据类型
3. 复杂类型关键字(5个)
>  struct:结构体声明  
>  union:共用体声明  
>  enum:枚举声明  
>  typedef:声明类型别名 
>  sizeof:得到特定类型或特定类型变量的大小
4. 存储级别关键字(6个)
>  auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 
>  static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 
>  extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明 
>  const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)

三、流程控制关键字

1.跳转结构(4个)
>  return:用在函数体中,返回特定值(或者是void值,即不返回值)  
>  continue:结束当前循环,开始下一轮循环 
>  break:跳出当前循环或switch结构  
>  goto:无条件跳转语句
2.分支结构(5个)
>  if:条件语句  else:条件语句否定分支(与if连用)  
>  switch:开关语句(多重分支语句)  
>  case:开关语句中的分支标记 
>  default:开关语句中的“其他”分治,可选
3.循环结构(3个)
>  for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件 
>  do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件 
>  while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

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

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

相关文章

如何在Mac上恢复未保存的Excel文件

您是否不小心关闭了 Excel,而没有将工作保存在 Mac 上?不要惊慌!本指南概述了帮助您在 Mac 上恢复未保存的 Excel 文件的简单方法。 由于断电、系统崩溃或关闭它而不保存而意外丢失您的 Excel 文件可能会造成挫败感,因为您可能在…

vue 引入 emoji 表情包

vue 引入 emoji 表情包 一、安装二、组件内使用 一、安装 npm install --save emoji-mart-vue二、组件内使用 import { Picker } from "emoji-mart-vue"; //引入组件<picker :include"[people,Smileys]" :showSearch"false" :showPreview&q…

利用ArcGIS Python批量拼接遥感影像(arcpy batch processing)

本篇文章将说明如何利用ArcGIS 10.1自带的Python IDLE进行遥感影像的批量拼接与裁剪。 1.运行环境&#xff1a;ArcGIS10.1 (安装传送门)、Python IDLE 2.数据来源&#xff1a;地理空间数据云 GDEMV2 30M分辨率数字高程数据 3.解决问题&#xff1a;制作山西省的DEM影像 如下…

小白不知道怎么投稿?记住这个好方法

作为一名单位信息宣传员,我最初踏上这条道路时,满心憧憬着通过文字传递我们单位的精彩瞬间,让社会听见我们的声音。然而,理想与现实之间的距离,却在一次次邮箱投稿的石沉大海中渐渐清晰。那时的我,像所有“小白”一样,以为只要用心撰写稿件,通过电子邮件发给各大媒体,就能收获满…

C# WPF入门学习主线篇(四)—— Button的常用属性

本期来详细介绍一下WPF中Button组件的属性都有哪些 一、准备阶段 首先&#xff0c;打开我们之前创建好的工程。 这是我们之前几期一起做过的工程&#xff0c;现在重新创建一个button&#xff0c;来熟悉一下他的属性。 选中创建的button&#xff0c;点击属性栏 二、接下来介绍…

漫步者x1穷鬼耳机双耳断连

困扰了我两天&#xff0c;终于有时间解决这个问题了&#xff0c;查看了一堆都是别的型号。怎么没人用这个啥按键都没有的耳机QAQ&#xff0c;幸好给我找到了说明书&#xff0c;啊哈哈&#xff01; 说明书地址

【C++ 】学习问题及补充

一.自定义类型不初始化直接就赋值&#xff0c;比如string类会怎么样 vectr<string>里已经给每个string对象已经分配好空间&#xff0c;为什么不初始化再赋值会报错 在C中&#xff0c;std::string类是一个动态字符串类&#xff0c;它内部管理着一个字符数组&#xff0c;用…

C++ ─── string的模拟实现

本博客将简单实现来模拟实现string类&#xff0c;最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。 下期我们继续讲解完整版string的模拟实现&#xff08;将不再会是浅拷贝了&#xff09; 说明&#xff1a;下述string类没有显式定义其拷贝构造函数与赋值运…

PyCharm面板ctrl+鼠标滚轮放大缩小代码

1.【File】➡【Settings】 2.点击【Keymap】&#xff0c;在右边搜索框中搜incre&#xff0c;双击出现的【Increase Font Size】 3.在弹出的提示框中选择【Add Mouse Shortcut】 4.弹出下面的提示框后&#xff0c;键盘按住【ctrl】&#xff0c;并且上滑鼠标滚轮。然后点击【O…

MyBatis复习笔记

3.Mybatis复习 3.1 xml配置 properties&#xff1a;加载配置文件 settings&#xff1a;设置驼峰映射 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings>typeAliases&#xff1a;类型别名设置 #这样在映射…

Excel某列中有不连续的数据,怎么提取数据到新的列?

这里演示使用高级筛选的例子&#xff1a; 1.设置筛选条件 在D2单元格输入公式&#xff1a;COUNTA(A4)>0 这里有两个注意事项&#xff1a; *. 公式是设置在D2单元格&#xff0c;D1单元格保持为空&#xff0c; **. 为什么公式中选A4单元格&#xff0c;A列的第一个数据在A3…

利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

aws lakeformation注册s3位置的原因

参考资料 lakeformation底层数据的访问逻辑 向lakeformation注册s3位置的目的是让lakeformation控制对AWS S3 位置底层数据的访问&#xff08;以下简称LF&#xff09; 注册s3位置后可以进行两种授权 数据访问授权&#xff08;SELECT、INSERT 和 DELETE&#xff09; 数据位置…

这是你要找的可视化开发平台吗?【送源码】

今天着重推荐一款高效的拖拽式低代码数据可视化开发平台 它就是 goView 它将图表或页面元素封装为基础组件&#xff0c;无需编写代码即可制作数据大屏&#xff0c;减少心智负担。 介绍 框架&#xff1a;基于 Vue3 框架编写&#xff0c;使用 hooks 写法抽离部分逻辑&#xf…

springboot 两个相同类型的Bean使用@Resouce加载

问题描述 有两个相同类型的Bean 使用Service等注解注入或者Bean注入启动以后报错&#xff1a; qualifying bean of type com.fasterxml.jackson.databind.ObjectMapper available: expected single matching bean but found 2提示有相同的类型两个。 解决 * 每个Bean Resour…

Excel未响应时强关后,Excel插件消失

目录 我们分析一下插件消失的原因&#xff1a; 针对上面表现出来的2个问题&#xff0c;进行针对性的解决 &#xff1a; 1、不被关进去&#xff0c;是不是就没有后续的一系列的问题了&#xff0c;各自安好 2、保留住自动加载的行为 PS&#xff1a;配置受信任的位置注册列表…

Redis教程(十二):Redis的持久化RDB和AOF

RDB持久化(Redis DataBase) rdb文件保存路径&#xff1a; redis工作目录/dump.rdb&#xff0c;是二进制文件&#xff0c;是redis数据的快照。 RDB规则配置&#xff1a; save 900 1 代表 900秒内进行了1次操作就触发写rdb文件保存 注意&#xff1a; 执行flushall命令&…

10.SpringBoot 统一处理功能

文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式&#xff1f;2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办&#xff1f;…

使用 Python 编程语言进行供应链分析

前言 要分析一家公司的供应链&#xff0c;我们需要供应链不同阶段的数据&#xff0c;如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集&#xff0c;其中包括一家时尚和美容初创公司的供应链数据。 1. 相关数据集 让我们导入…

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

Bug&#xff1a;Linux用户拥有r权限但无法打开文件【Linux权限体系】 0 问题描述&解决 问题描述&#xff1a; 通过go编写了一个程序&#xff0c;产生的/var/log/xx日志文件发现普通用户无权限打开 - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限 - 查看该日…