初识C语言

初识C语言—C语言基础


中文,英语,法语…是人与人之间交流的基本自然语言,那么在计算机中交流的语言就是计算机语言。目前已知的已有上期千种计算机语言,计算机语言可以使计算机工作,以满足大家的需求, C语言 就是众多计算机语言其中一种。

  • C语言最初是作为Unix系统的开发工具而发明的。

    截至目前C语言,对于TIOBE指数来说,依然位居第二,可想而知,C语言的重要地位。

    C语言的发展

  • "第一个"C语言程序

include <stdio.h>
int main(){
	printf("Hello World!\n");
	return 0;
}

1. main函数


  • main函数是程序的入口,C语言程序无论有多少行,都是从main函数开始执行,所以main函数又称为 主函数
  • main函数前面的int表示main函数执行后返回一个整型类型的值,正好与结尾的return 0呼应
    • mian函数是程序的入口;
    • mina函数有且只有一个;
    • 即使有多个.c文件(在一个项目中),因为程序的入口只有一个,所以只能有一个main函数;
  • 关于main函数的常见错误总结
    • main函数写成mian
    • main后边的()漏掉了;
    • 代码中不能使用中文符号,如:括号和分号等;
    • 一段语句结束后,要添加分号;

2.printf函数和库函数


  • printf函数
printf("Hello World!\n");

printf的作用是实现屏幕上的信息打印
printf函数是一个库函数,它的功能是在标准输出设备(常指屏幕)上打印(输出)信息。上面的代码是打印了一串字符串。只要把想要打印的内容放在双引号内传递给printf即可打印输出。


printf当然也可以打印其他类型的数据。例如

include <stdio.h>
int main()
{
	int n = 100;
	printf("%d\n",n);//整型
	printf("%c\n",'q');//字符型
	printf("%lf\n",3.14);//双精度浮点型
	return 0;
}

这里的%d,%c,%lf属于占位符,会被后面的值替换。

  • 库函数
    • 为了提高程序员的开发效率,避免一些重复功能代码的出现,C语言标准规定了一些函数,这些函被提前实现组成了一个函数库,被称为 标准函数库 ,简称 库函数 内置到编译器上给程序员使用 。不同的编译器厂商可能会在此基础上扩展部分函数。
    • 想要使用这些库函数就必须声明,需要包含对应的头文件,如:想要使用printf函数就需要声明 #include <stdio.h>

3.关键字


  • C语言中有一些有意义的关键符号,如:int,if,reurn等,这些符号被称为保留字关键字
    • 关键字在程序中有特殊意义,是保留给C语言使用的;
    • 在编程过程中自己创建标识符时是不能和关键字重复的;
    • 关键字同时页不能自己创建;
  • 常见的**关键字** 有 32个:
关键字功能说明
auto声明自动变量
break跳出当前循环
case开关语句分支
char声明字符型变量或函数返回值类型
const定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变
continue结束当前循环,开始下一轮循环
default开关语句中的"其它"分支
do循环语句的循环体
double声明双精度浮点型变量或函数返回值类型
else条件语句否定分支(与 if 连用)
enum声明枚举类型
extern声明变量或函数是在其它文件或本文件的其他位置定义
float声明浮点型变量或函数返回值类型
for一种循环语句
goto无条件跳转语句
if条件语句
int声明整型变量或函数
long声明长整型变量或函数返回值类型
register声明寄存器变量
return子程序返回语句(可以带参数,也可不带参数)
short声明短整型变量或函数
signed声明有符号类型变量或函数
sizeof计算数据类型或变量长度(即所占字节数)
static声明静态变量
struct声明结构体类型
switch用于开关语句
typedef用以给数据类型取别名
unsigned声明无符号类型变量或函数
union声明共用体类型
void声明函数无返回值或无参数,声明无类型指针
volatile说明变量在程序执行中可被隐含地改变
while循环语句的循环条件

注意:在C99标准中加入了inline,restrict,_Bool,_Complex,_Imaginary等关键字。

4.ASCII编码

  • 我们在键盘上敲出的各种字符,如:@,#,¥,%,a,b,c等,都被称为字符(在C语言中一般都用单引号‘’括起来
  • 计算机中的所有数据是以二进制的方式储存的,为了储存这些字符,美国国家标准协会(ANSI)出台了一个标准**ASCII编码**,C语言就遵循了ASCII 编码的方式 ,如下表:
  • 在这里插入图片描述
  • 学习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时不可打印的

5.字符串与\0

  • 在C语言中,使用双引号括起来的一串字符被称为字符串,例如:“wwm”。字符串的打印格式可以用%s来指定,当然也可以直接打印:
#include <stdio.h>
int main(){
	printf("%s\n","hello world");//%s指定
	printf("hello world\n";//直接打印
	return 0;
	}

注意\0是一个很特别的字符,就是在字符串的末尾会隐藏放一个\0,表示字符串结束的标志 (不管你有没有输入)。
- 我们输入的是:h,e,l,l,o,w,o,r,l,d,但实际上是h,e,l,l,o,w,o,r,l,d,\0.
- \0是字符串结束的标志,所以我们在使用库函数printf`()``打印字符串和strlen()``计算字符串长度时,遇到\0就会自动停止。

  • 将一个字符串放到一个字符数组中,以便于我们来验证一下\0的功能
#include <stdio.h>
	int main(){
	char arr1[] = {'a','b','c'};
	char arr2[] = {"abc"};
	printf("%s\n",arr1);
	printf("%s\n",arr2);
	return 0;
	}

在这里插入图片描述
-我们可以看到,打印arr1字符数组的时候,打印a,b,c后还打印了一些随机值,这就是因为arr1结尾没有\0字符作为结束标志的原因。可以看到arr2使用了\0打印完全正常.
-如果在arr1数组中单独放一个\0字符会发生什么:

#include <stdio.h>
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;
}

在这里插入图片描述

三次的打印结果相同,都是因为打印到\0就停止了。

6.转义字符

  • 前面我们看到的\0,\n 可能会很疑惑,其实这些字符都是 转义字符 顾名思义:就是转变原来的意思的字符。比如:
    • 一串字符串中有n
#include <stdio.h>
	int main(){
	printf("abcndef");
	return 0;
}

不加\的
- 如果我们在n前面加上\:

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

加了\的
前后输出代码不一致,这就是转义字符导致的结果,\n就是一个表示换行的转义字符

  • C语言中转义字符大概有以下这些:
转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符""092
\’代表一个单引号(撇号)字符039
\"代表一个双引号字符034
\?代表一个问号063
\0空字符(NUL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xdd十六进制所代表的任意字符十六进制

注意:最后两种转义字符是8进制和16进制的表示形式

7.语句和语句分类

  • C语言的代码是有一条一条的语句构成的,C语言的语句分为以下五类:
    • 空语句
    • 表达式语句
    • 函数调用语句
    • 复合语句
    • 控制语句

1.空语句

  • 一个分号就是一条语句
#include <stdio.h>
int main() {
		;//空语句
	return 0;
}

2.表达式语句

  • 表达式语句就是在表达式后面加上分号
#include <stdio.h>
int main() {
	int a = 1;
	int b = 2;
	b = a + 3;//表达式语句
	return 0;
}

3.函数调用语句

  • 函数调用的时候同样会加分号,这就是函数调用语句。
#include <stdio.h>
int Add(int x, int y) {
	return x + y;
}
int main() {
	
	int ret = Add(2, 3);//函数调用语句
	printf("%d",ret);
	return 0;
}

4.复合语句

  • 成对括号中的代码就构成一个代码块,也被称为复合语句
#include <stdio.h>  
  
int main() {  
    int score = 85;  
      
    // 如果分数大于60,执行复合语句  
    if (score > 60) {  
        // 这是一个复合语句  
        {  
            int level = 'A'; // 在复合语句内部声明的变量  
            printf("分数是 %d,等级是 %c\n", score, level);  
        }  
    } 
    return 0;  
}

5.控制语句

  • 控制语句用于控制程序的执行流程,实现程序的各种结构化方式。其中C语言支持三种结构:顺序结构,选择结构,循环结构,所以C语言有九种控制语句。
类别语句
条件语句(分支语句)if语句,switch语句
循环语句do-while语句,while语句,for语句
转向语句break语句,goto语句,continue语句,return语句

8.注释

  • 注释是对程序的说明,编译器会自动忽略掉,对代码不产生影响。
  • 注释是帮助自己和别人理解代码的有利方式
  • 注释的方法有两种:
    1./*式注释
/* 注释 */

/*
这是一行注释
*/

int arr1/*注释也可以夹在行内*/[] = {0};

2.//式注释

int a = 0;//注释

注意

  • 无论是哪种注释都不能放在双引号内,因为可能会成为字符串的一部分,从而失去注释作用。
  • 编译时,注释会被替换成一个空格
  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值