当前位置:首页 » 《关于电脑》 » 正文

史上最全C语言概念,超详细,800年难遇

2 人参与  2024年10月20日 18:01  分类 : 《关于电脑》  评论

点击全文阅读


初识C语言

一、C语言是什么1.1 概念1.2 编译和链接1.3源文件和头文件的介绍 二、第一个C语言程序三、两个常用函数和库函数的介绍1.main函数2.printf函数3.库函数 四、关键字介绍五、字符和ASCII编码六、字符串和\06.1 字符串6.2 \0 七、转义字符

一、C语言是什么

1.1 概念

C语言是人和计算机交流的计算机语言
举个例子:

人 -- 人 :汉语、英语、法语 --**自然语言**人 -- 计算机: Java、C、C++ -- 计算机语言

1.2 编译和链接

C语言是编译型计算机语言,C语言原代码都是文本文件,本身无法运行,必须通过编译器翻译和链接器的链接,生成二进制的可执行的文件。下图演示了源程序经过编译器和链接器处理的过程
在这里插入图片描述

注:
1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(obj.为后缀的文件)
2.多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)

1.3源文件和头文件的介绍

C语言把 .c 为后缀的文件称为源文件,把 .h 为后缀的文件称为头文件

二、第一个C语言程序

#include <stdio.h>int main(){printf("hello\n");return 0;}

在VS2022上按快捷键 Ctrl + F5 即可运行。

三、两个常用函数和库函数的介绍

1.main函数

C语言程序不管有多少行代码,都是从 main 函数开始执行的, main 函数是程序的入口,也被称为 主函数 。 main 前面的 int 表示 main 函数执行结束的返回类型—— 整型 。所以在 main 函数的最后写 return 0; 前后呼应。

main函数注意事项

main函数是程序的入口main函数有且只有一个

main函数易错总结

main被写成了 mianmain后边的 () 漏掉了代码中不能出现中文符号,比如中文括号和中文分号一条语句结束后,要有分号

2.printf函数

上述代码中

printf("hello world\n")

使用了 printf 函数,实现了 打印 功能。
这里 printf 是一个 库函数 ,它的功能是在标准输出设备(一般指屏幕)上进行信息打印。
printf 函数可以打印很多类型的数据,比如:

int n = 100;printf("%d\n",n);    //100      -- 整型printf("%c\n",'q‘);  //q        -- 字符printf("$f\n",3.14); //3.140000 -- 单精度浮点型
这里的 ==%d== 、 ==%c== 和 ==%f== 都是 **占位符** ,会被后面的值替换。

**注意:printf函数需要包含头文件 stdio.h ,具体方法就是:

#include <stdio.h>

3.库函数

为了步再重复常见代码,让程序员提升开发效率,C语言规定一组函数,这些函数组成一个函数库,被称为 标准库 ,这些函数也被称为 库函数
一系列的库函数一般会声明在同一个头文件中,所以 库函数的使用,必须要包含对应的头文件 。

库函数比较多,可参考cplusplus网站

四、关键字介绍

关键字 也被称为 保留字

关键字都有特殊的意义,是留给C语言使用的

自己创建标识符时,不能和 关键字重复

关键字也是不能自己创建的

C语言的 32个关键字 如下

1 auto  break  case  char  const  continue  default  do  double  else  enum  extern2 float  for  goto  if  int  long  register  return  short  signed  sizeof  static  3 struct  switch  typedef  union  unsigned  void  volatile  while

注: 在C99标准中加入了 inlinerestrict_Bool_Complex_Imaginary 等关键字

五、字符和ASCII编码

我们知道在计算机中所有的数据都是以 二进制 的形式存储的,如果给这些字符编一个二进制序列,这个就叫做 编码 ,C语言中的字符遵循 ASCII 编码的方式
ASCII码表
在这里插入图片描述
ASCII码表不需要记忆,现用现查,网址:https://zh.cppreference.com/w/cpp/language/ascii

记住几组常见的数据:

字符A ~ Z的ASCII码值从65 ~ 90字符a ~ z的ASCII码值从97 ~ 122对应大小写字符的ASCII码值相差32(小写的大)数字0 ~ 9的ASCII码值从48 ~ 57换行 \n 的ASCII码值是 10ASCII码值从0 ~ 31 的32个字符是不可打印字符,无法打印在屏幕上观察

例:
单个字符的打印可用%c来指定格式

#include <stdio.h>int main(){printf("%c\n",'Q');printf("%c\n",81); //这里的81是字符Q的ASCII码值,打印Qreturn 0;)

可打印字符展示

#include <stdio.h>int main(){int i = 0;for (i = 32; i <=127 ;i++){printf("%c ",i);if (i % 16 == 15)printf("\n"); }return 0;}

运行结果如下:
在这里插入图片描述

六、字符串和\0

6.1 字符串

使用 双引号 括起来的一 字符是 字符串 —— %s
使用 单引号 括起来的一 字符是 字符 ——%c

#include <stdio.h>int main(){printf("%s\n", "hello C");printf("hello C");return 0;}

在这里插入图片描述

6.2 \0

C语言字符串中一个特殊的知识,就是在字符串的末尾会隐藏 \0 ,这个 \0 字符就是字符串 结束标志
下面我门调试看一下
在这里插入图片描述
对于字符串”abcdef“,我们实际上看到了6个字符:a ,b ,c ,d ,e ,f ,但实际上在末尾还隐藏一个 \0 的转义字符, \0是 字符串结束的标志 。所以我们在使用库函数 printf() 打印字符串或 strlen() 计算字符串长度的时候,遇到 \0 的时候就 自动停止 了。
下面让我们来验证 \0 的功能

#include <stdio.h>int main(){char arr1[] = { 'a','b','c' }; // arr1数组中存放3个字符char arr2[] = "abc"; // arr2数组中存放字符串printf("%s\n", arr1);printf("%s\n", arr2);}

输出的结果为:
在这里插入图片描述
现在让我们调试看下什么情况
在这里插入图片描述
哦,原来arr1中没有 \0 来作为结束标注,所以输出玩abc后会继续往后输出,直到找到 \0 为止。
那如果我们单独在arr1中手动加入 \0,输出会不会发生改变呢

#include <stdio.h>int main(){char arr1[] = { 'a','b','c','\0' }; // arr1数组中存放3个字符char arr2[] = "abc"; // arr2数组中存放字符串printf("%s\n", arr1);printf("%s\n", arr2);}

输出结果为:
在这里插入图片描述
果然,就是 \0 惹的祸!!!从上述可以看出 \0 的重要性

七、转义字符

转义字符 ,顾名思义,就是:转变原来的意思的字符。
下面让我们来几个例子

#include <stdio.h>int main(){printf("abcndef\n");printf("abc\ndef");return 0;}

输出结果为:
在这里插入图片描述
‘n’ 是一个字符,而 \n 是表示换行的意思。
C语言还有好多转义字符,具体如下:

\? :在书写连续多个问号时使用,防止它们被解析成三字母词\’ :表示字符常量 ’\" :表示一个字符串内部的双引号\\ :用于表示一个反斜杠,防止被解释为一个转义字符\a :发出警报声或出现闪烁,或者同时发生\b :退格键,光标回退一个字符,但不删除字符\f :换页符,光标移动到下一页。(一般没用)\r :回车符,光标移动到同一行的开头\t :制表符,光标移动到下一个水平制表位,通常是下一个4/8的倍数\v :垂直分隔符,光标移动到下一个垂直指标为,通常是下一行的同一列

下面两种转义字符代表 8进制16进制 表示形式:

\ddd :d d d表示1 ~ 3个进制的数字。 eg: \130 : 其实就是88,表示字符X\xdd :d d表示2个十六进制数字。 eg: \x30 :其实就是48,表示字符0
\0 :null字符,代表没有内容, \0 就是 \ddd 这类转义字符的一种,用于字符串的结束标志,其ASCII码值为0.

点击全文阅读


本文链接:http://zhangshiyu.com/post/174666.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1