C语言常见的概念

C语言常见的概念

编译和链接

C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。C语⾔代码是放在.c为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译和链接2个过程。
在这里插入图片描述

注:.c文件经过编译后生成.obj文件,再通过连接器生成.exe程序

main函数

每个C语⾔程序不管有多少⾏代码,都是从main函数开始执⾏的,main函数是程序的⼊⼝,

main函数也被叫做:主函数。main前⾯的int表⽰main函数执⾏结束的时候返回⼀个整型类型的值。所以在main函数的最后写return 0;正好前后呼应。

•main函数是程序的⼊⼝

•main函数有且仅有⼀个

•即使⼀个项⽬中有多个.c⽂件,也只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)

printf和库函数

printf

这⾥简单的介绍⼀下printf,printf是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进⾏信息的打印。上⾯的代码是使⽤printf函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。如下述代码。

printf("哈哈哈");

printf是printf+form也就是输出形式。

当然除了字符串也可以打印其他形式。

printf("%d",666);//整型
printf("%c",'a');//字符
printf("%f",3.14);//浮点型

最后别忘记在使用库函数前包含头文件,printf的头文件为inclued<stdio.h>

库函数

那什么是库函数呢?

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函数其他编译器不⼀定⽀持)。

可以在下面网站了解库函数

关键字介绍

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

•关键字都有特殊的意义,是保留给C语⾔使⽤的

•程序员⾃⼰在创建标识符的时候是不能和关键字重复的•关键字也是不能⾃⼰创建的。

这是C语言中的全部关键字

在c99标准中添加了inline ,restrict,_ Bool,_ Complex,__Imaginary等关键字。

字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:‘a’,‘b’,‘@’。我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了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个字符是不可打印字符,⽆法打印在屏幕上观察

如果想看可打印字符,可输入以下代码查看

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

字符串和\0

C语⾔中如何表⽰字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如:“abcdef”,就是⼀个字符串。

字符串的打印格式可以使⽤%s来指定,也可以直接打印如下:在这里插入图片描述

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

C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个\0字符,这个\0字符是字符串的结束标志。

C语⾔中也可以把⼀个字符串放在⼀个字符数组中,我们在这⾥利⽤下⾯的代码验证⼀下\0的功能。

#include<stdio.h>
int main()
{
	char arr1[] = { 'a','b','c','d'};//arr1三个字符
	char arr2[] = "abcd";//arr2放一个字符串
	printf("%s\n", arr1);
	printf("%s\n", arr2);

	return 0;
}

在这里插入图片描述

在这里插入图片描述

可以看到字符串后边自带一个/0,arr1因为没有/0,所以不会停止,所以输出了一些随机值。

但是arr2的打印就是完全正常的,就是因为arr2数组是使⽤字符串常量初始化的,数组中有\0

如果输入以下代码会有什么结果呢

int main()
{
	char arr1[] = { 'a', 'b', 'c', '\0' };   
	char arr2[] = "abc";      
	printf("%s\n", arr1);      
	printf("%s\n", arr2);       
	printf("%s\n", "abc\0def");     
		
	return 0;
}

在这里插入图片描述

此时输出结果一致

转义字符

也许在前⾯的代码中你看到\n ,\0很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。

C语⾔中像这样的转义字符还有⼀些,具体如下:

• ?:在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。• ‘:⽤于表⽰字符常量’

• ":⽤于表⽰⼀个字符串内部的双引号

• \:⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。

• \a:警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。

• \b:退格键,光标回退⼀个字符,但不删除字符。

• \f:换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于\v。• \n:换⾏符。

• \r:回⻋符,光标移到同⼀⾏的开头。

• \t:制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。

• \v:垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

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

• \ddd:ddd表⽰1~3个⼋进制的数字。如:\130表⽰字符X

• \xdd:dd表⽰2个⼗六进制数字。如:\x30表⽰字符0

转义字符参考:[](https://zh.cppreference.com/w/c/language/escape)

语句和语句分类

C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:•空语句

•表达式语句

•函数调⽤语句

•复合语句

•控制语句

此处不细讲

符X

• \xdd:dd表⽰2个⼗六进制数字。如:\x30表⽰字符0

转义字符参考:[](https://zh.cppreference.com/w/c/language/escape)

语句和语句分类

C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:•空语句

•表达式语句

•函数调⽤语句

•复合语句

•控制语句

此处不细讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值