C语言常见概念

本文介绍了C语言的编译与链接过程,包括源文件和头文件的使用,以及VS项目设置。重点讲解了main函数的作用,printf和库函数的使用,以及字符、字符串、ASCII编码和C语言的关键字、转义字符以及两种注释形式。
摘要由CSDN通过智能技术生成

编译与链接

C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件,可执行文件才能执行。

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

编译器VS的项目和源文件、头文件

在VS上写代码,我们是需要创建项目的,VS如何创建新项目详情可以看我的另一篇博客
链接:
C语言把.c为后缀的文件称为源文件,把.h为后缀的文件称为头文件
VS中头文件和源文件展示

main函数

每个C语言程序不论有多少行代码都是从main函数开始执行的,main函数是程序的入口,同时main函数也叫做** 主函数**。也因此原因,main函数在一个项目中有且只有一个。

printf和库函数

  • printf函数可以实现在屏幕上的信息打印.格式如下:
printf("hello C\n");

printf是一个库函数,它的功能是标准输出设备(⼀般指屏幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。
printf函数除打印字符串外还可以打印其他类型的数据,只是其中会用到占位符的使用,详情见后续笔记
链接:(现在还没有写出来,先用来占位,后续会补上哒!)

使用库函数时,是需要包含头文件的,比如:调用printf函数时需要包含stdio.h这个头文件,具体调用见下图:

#include <stdio.h>
  • 库函数

    为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进行实现,提供给程序员使用。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函数其他编译器 不⼀定 支持)。⼀个系列的库函数⼀般会声明在同⼀个头文件中,所以库函数的使用,要包含对应的头文件。库函数比较多具体了解可参考链接:https://cplusplus.com/reference/clibrary/

关键字简述

C语⾔中有⼀批保留的名字的符号,⽐如: intifreturn ,这些符号被称为保留字或者关键
字。

  • 关键字都具有特殊的意义,是保留给C语言使用的。
  • 我们在创建标识符的时候是不能够和关键字重复的。
  • 关键字咱自己也不能创建

以下是32个关键字:

autobreakcasecharconst
continuedefaultdodoubleelse
enumexternfloatforgoto
ifintlongregisterreturn
shortsignedsizeofstructswitch
typendefunionunsignedvoidvolatile
whilestatic

注:在C99标准中加⼊了 inlinerestrict_Bool_Comploex_Imaginary 等关键字。
想了解C语言全部的关键字可以点击下方的链接:
https://zh.cppreference.com/w/c/keyword

字符、字符串与ASCII编码简述

  • 字符

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a’等。

  • ASCII编码简述
    在计算机中所有的数据都是以二进制的形式储存的,而ASCII编码就是 字符 在内存中进行储存的一种二进制序列,是由美国国家标准学会(ANSI)出台的⼀个标准 ASCII 编码,而C语言遵循了这种 ASCII 编码的⽅式。

ASCII编码表详情可看下面这个链接:
https://zh.cppreference.com/w/cpp/language/ascii
而我们应该掌握的大致是以下几条:

  • 字符A - Z的ASCII码值是从65 - 90
  • 字符a - z的ASCII码值是从97 - 122
  • 大小写字符(如a和A)的ASCII码值的差值是32
  • 数字字符 0 - 9 的ASCII码值是48 - 57
  • 换行\n的ASCII码值是: 10
  • 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察

单个字符的打印可以使⽤%c来指定格式:

#include <stdio.h>
int main()
{
 printf("%c\n", 'Q');
 printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值,也是可以正常打印的
 return 0;
}
  • 字符串

使⽤双引号括起来的⼀串字符就被称为字符串,如:“abc”,就是⼀个字符串。

字符串的打印格式可以使⽤ %s 来指定,也可以直接打印如下:

# include <staio.h>

int main()
{
	pritnf("%s\n","hi C");
	printf("hi C");
	return 0;

}

在字符串中有一个特殊的知识,就是在字符串的末尾放着一个\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);
 
 return 0;
}

在这里我放上运行的结果:

结果显示
我们可以看到, arr1 字符数组在打印的时候,打印了 a 、 b 、 c 后还打印了⼀些随机值,这就是因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,所以在打印的时候没有停⽌。它会继续往后随机下去,直至遇到\0停止。因此arr1打印结果a 、 b 、 c后面跟的东西、长度都是不一定的,是随机的。

我们也可以再进行一些尝试,比如把arr1变成这样:

char arr1[] = {'a', 'b', 'c','\0'};

然后再进行运行尝试,看看这次arr1打印结果a 、 b 、 c后面还会不会再生成一些随机的字符(_)。

转义字符

转义字符顾名思义:转变原来的意思的字符。就比如我们上面用到的\n,\0。这些都是转义字符。

C语言的转义字符有很多,详情可看下面这个链接:https://zh.cppreference.com/w/c/language/escape

在这其中我们需要了解以下转义字符的效果:

  • \? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
  • \' :用于表示字符常量’
  • \" :用于表示⼀个字符串内部的双引号
  • \\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
  • \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
  • \b :退格键,光标回退⼀个字符,但不删除字符。
  • \f :换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于 \v
  • \n :换行符。
  • \r :回车符,光标移到同一行的开头。
  • \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个8的倍数。
  • \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下一行的同⼀列。

下⾯2种转义字符可以理解为:字符的8进制或者16进制表示形式

  • \ddd :d d d表⽰ 1 - 3 个八进制的数字。 如: \130 表⽰字符X
  • \xdd :d d表⽰2个十六进制数字。 如: \x30 表⽰字符0
  • \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其
    ASCII码值是0。

注释

注释有两种表示方式

/* */的表示形式

第⼀种⽅法是将注释放在 /*...*/ 之间,内部可以分行。

/*
 这是⼀⾏注释
*/

这中注释是可以插在行中的,比如:

char arr1[] = {'a', 'b',/* 这是一个小注释!*/ 'c'};

这种在实际打印过程是不会有所显示的,这种注释方式可以用来对一些内容比如函数进行说明,但是切记不要忘记写结束符号*/!!!

同时/*...*/不支持嵌套注释,/* 开始注释后,遇到第⼀个 */ 就认为注释结束了。

//的表示方式

第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是 C99 标准新增的语法。

// 这是⼀⾏注释
int a = 1; // 这也是注释

注释会被替换

编译时,注释会被替换成⼀个空格,所以 a* 这⾥是注释*/bc 会变成 a bc ,⽽不
abc

不管是哪⼀种注释,都不能放在双引号里面。双引号里面的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作用。

永远不要觉得,只要我不断苛责和否定,我就可以改变。责怪自己往往无法为自己带来真正的改善,反而会增加无力感和焦虑感。
																											————《猫和狗的生活哲学》

与大家共勉!
本次内容就到此结束啦!下次再见!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值