C语言常见概念(1)


前言

  我们不妨把这个经典的"Hello,world!"作为我们的第一个C语言程序,其作用是在屏幕上打印Hello,world!
  我知道你可能有很多疑问,不急,请往下慢慢看!
该程序的作用是在屏幕上打印Hello,world!

一、main函数

  每个C语言程序不管有多少行代码,都是从main函数开始执行的,main函数是程序的入口,也被称为主函数。而 main 前面的 int 表示main函数执行结束的时候返回一个整型类型的值,所以在main函数的最后写 return 0; 也算是前后呼应。
综上,关于main函数,我们要注意:
 (1)、main函数是程序的入口
 (2)、main函数有且只有一个
 (3)、即使一个项目中有多个.c文件,但是只能有一个main函数,因为程序的入口只能有一个
其实,第一次写代码,会有一些需要避免的常见错误:
 (1)、main被写成了mian
 (2)、main后边的()漏掉了
 (3)、代码中不能使用中文符号,比如括号和分号
 (4)、一条语句结束后,漏加了分号

二、printf和库函数

1.关于printf函数

在上面的代码中有这么一条语句
printf(“Hello,world!”);

  这条语句使用了printf函数,作用是实现屏幕上的信息打印关于printf
  我们要认识到它是一个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印,上述代码把一串字符放在双引号中并传递给printf函数就可以打印,不仅如此,printf函数也可以用来打印其他类型的数据,比如:

	int n = 100;
	printf("%d\n", n); // printf打印整型
	printf("%c\n", 'q'); // printf打印字符
	printf("%lf\n", 3.14); // printf打印双精度浮点型

这里的%d,%c等是占位符,会被后面的值替换(后期我会慢慢介绍)
而库函数是需要包含头文件的,比如printf函数需要包含stdio.h这个头文件,具体来说就是:

#include <stdio.h>

2.什么是库函数?

  为了不再重复实现常用的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用,这些函数组成了一个函数库,被称为标准库,这些函数也就被称作库函数。在这个基础上一些编译器厂商可能会额外扩展提供部分函数(这些函数其他编译器不一定支持)
一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。
库函数比较多,后期我会慢慢来介绍,提前了解可以参考该链接
C语言库函数

三、关键字

  我们在最开始的程序所看到的int、if、return等一批C语言保留的名字的符号,被称为保留字或关键字,要注意:
 1.关键字都有特殊的意义,是保留给C语言使用的
 2.程序员自己在创建标识符的时候是不能和关键字重复的
 3.关键字也是不能字符创建的
C语言的32个关键字如下:
注意不要硬背! 随着你编程经验的增加,这些自然会落在心里的。
在这里插入图片描述
C99标准还加入了其他诸如inline、restrict等关键字
关于C语言关键字的全部介绍,可提前参阅链接
C语言关键字

四、字符和ASCII码表

  在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:‘a’,‘b’,‘@’。
  我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会出台了一个标准ASCII编码,C语言中的字符就遵循了ASCII编码的方式。
  事实上,我们不需要记住所有的ASCII码表中的数字,使用时候查看即可,不过我们最好能掌握几组特殊的数据:
 1.字符A~Z的ASCII码值从65-90
 2.字符a~z的ASCII码值从97-122
 3.对应的大小写字符(a和A)的码值之差永远是32
 4.数字字符0~9的ASCII码值从48-57
 5.换行\n的ASCII的值是10
 6.在这些字符中,0~31这32个字符是不可打印字符,即无法打印在屏幕上观察

ASCII码表
在这里插入图片描述
单个字符的打印可以使用%c来指定格式:
在这里插入图片描述
可打印字符展示:
在这里插入图片描述

五、字符串和\0

  C语言中如何表示字符串呢?答案是使用双引号括起来的一串字符就被称为字符串,如"abcdef",就是一个字符串
字符串的打印格式可以使用%s来指定,也可以直接打印如下:
在这里插入图片描述
C语言字符串中有一个特殊的知识,就是在字符串的末尾隐藏放着一个\0字符,这个\0字符是字符串的结束标志
在这里插入图片描述
对于字符串"abcdef",我们实际上看到了字符:a,b,c,d,e,f,但是实际上在末尾还隐藏一个\0的转义字符,
\0是字符串的结束标志,所以我们在使用库函数printf()打印字符串或者strlen()计算字符串长度的时候,遇到\0的时候就自动停止了
C语言中也可以把一个字符串放到一个字符数组中,我们在这里利用下面的代码验证一下\0的功能
下列代码,会出现什么输出结果?
在这里插入图片描述
在这里插入图片描述

答案是:
abc
abc烫烫烫烫烫烫烫烫烫烫烫

想象内存是一个长条,而arr2数组因为没有字符\0,在打印到字符c的时候,并没有停止,一直往下,直到遇到内存中有一个字符\0,显然这是错误的,属于非法访问内存了,图形语言如下:
在这里插入图片描述

六、转义字符

  也许在前面的代码中,你看到\n,\0的时候很纳闷,其实在字符中有一组特殊的字符是转义字符。

顾名思义,即转变原来的意思的字符

比如,我们有字符n,在字符串中打印的时候自然能打印出这个字符,但是如果我们修改一下,在n的前面加上\,就会有以下输出结果
在这里插入图片描述
为什么修改前后的代码输出结果截然不同?
这就是转义字符的问题,\n是一个转义字符表示换行的意思,可以简单的理解为\让n的意思发生了转变
C语言中,类似的转义字符还有一些,大家可自行实践,体会一下它们各自的作用,具体如下:
在这里插入图片描述

七、语句和语句分类

  C语言的代码是由一条一条的语句构成的,可分为以下五类

空语句

空语句是最简单的,一个分号就是一条语句,是空语句

#include <stdio.h>
int main()
{
; // 空语句
return 0;
}
一般出现地方是:这里需要一条语句但是这个语句不需要做任何事

表达式语句

表达式语句就是在表达式的后面加上分号

#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; // 表达式语句
return 0;
}

函数调用语句

函数调用的时候,也会加上分号,就是函数调用语句

#include <stdio.h>
int main()
{
printf(“hehe\n”); // 函数调用语句
return 0;
}

复合语句

复合语句其实就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合语句

控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义而成,C语言有九种控制语句。
在这里插入图片描述
1.条件判断语句:if、switch
2.循环执行语句:do while、while、for
3.转向语句:break、goto、continue、return
哈哈,预告一下,下几篇文章将会重点介绍这几个控制语句,应该值得你的期待

八、注释

  注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响,是给自己或者别人看的,大家看前面我给出的代码,就包含了注释,好的注释可以帮我们更好理解代码,事实上,写注释一定程度上反应了程序作者的素质,建议大家写必要的注释,适宜为好。
C语言的注释有两种方法:

/* * /的形式

这种方法就是将注释放在/* … */之间,内部可以分行,也可以插在行内
在这里插入图片描述

在这里插入图片描述
但是注意不可以嵌套注释!因为/开始注释后,遇到第一个/就认为注释结束了
在这里插入图片描述

//的形式

第二种写法是将注释放在双斜杠//的后面,从双斜杠到行尾都属于注释,这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾,这是C99标准新增的语法
在这里插入图片描述
对了,不管是哪一种注释,都不能放在双引号里面
双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用

printf(“// hello /* world */”) // err

注释会被替换

编译时,注释会被替换成一个空格,所以假设min/**/Value会变成min Value,而不是minValue。

总结

  今天是有实货的第一篇,介绍了一些C语言的基本概念,还算不错吧,哈哈!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值