【C语言】C语言复习笔记

目录

为什么要学C语言?

1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

总所周知,任何东西的盛行都只是一个阶段,语言也是如此。但是,C语言是个例外,一个矗立了半个世纪的语言,其中好坏,我想应该不难了之。

C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。

  • hello Cain_Xcy
//hello Cain_Xcy!
//想必学过其他语言的人都知道,所有语言都是hello开始的.
#include <stdio.h>  //头文件,这里不做介绍
#include <stdlib.h>
//argc:传入参数的个数,包括应用程序名字。
//argv:用于run时,把命令行参数传入程序。
int main(int argc,char* argv[])
{
	printf("hello,Cain_Xcy!\n"); //双引号之间输入想要显示的东西

	system("pause"); //系统函数,使小黑窗口暂停下来,不然就一闪而过
	return 0; //返回值,后面会详细讲
}
  • C语言的具体结构
    在这里插入图片描述

  • 必不可少之主函数

    C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。
    而main前面的int就是主函数的类型.
    printf()是格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息
    return是函数的返回值,根据函数类型的不同,返回的值也是不同的。
    \n是转义字符中的换行符。(注意:C程序一定是从主函数开始执行的)

  • 良好编程习惯

    一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行。
    函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进。
    括号要成对写,如果需要删除的话也要成对删除。
    当一句可执行语句结束的时候末尾需要有分号。
    代码中所有符号均为英文半角符号。
    在这里插入图片描述

  • 程序解释——注释
    经过注释了的代码编译器是不会运行的。
    单行注释://

//printf("hello,Cain_Xcy!");

多行注释:/**/

/*
printf("hello,Cain_Xcy1!");
printf("hello,Cain_Xcy2!");
printf("hello,Cain_Xcy3!");
*/
  • 有名有姓的C标识符
    1.C语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字 符必须是字母或下划线。在使用标识符时还有注意以下几点:

    2.标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8 位相同时,则被认为是同一个标识符。
    3.标识符是严格区分大小写的。例如Cain和cain是两个不同的标识符。
    4.标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。
    5.标识符不能是C语言的关键字。想了解更多C语言关键字的知识。

  • 变量及赋值

    变量:程序运行(run)过程中值会变化的量,就叫变量。
    变量占据内存的一定大小,使用变量之前一定要初始化。
    变量赋值的两种方法:
    1、先定义变量,再赋值。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {//定义一个整型变量a
    	int a;  //先定义
    	a = 10; //再赋值
    	int b,c,d;  //直接定义三个,分别赋值.
    	b = 10;
    	c = 10;
    	d = 10;
    }
    

    2、定义变量时就赋值。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {//定义了一个整型变量a,并给他赋值为10;
    	int a = 10;//定义变量就赋值(初始化)
    	//int b=c=d = 10; //error,这是不合法的。错误的写法。
    }
    

    3、图解内存
    在这里插入图片描述
    图片中应该是变量的值,少打了一个字。
    变量定义的格式: 数据类型 变量名;

  • 基本数据类型
    C语言中数据类型可分为四类:
    基本数据类型,构造数据类型,指针类型,空类型。
    在这里插入图片描述
    最常用的整型(int)、实型(double,float)、字符型(char)。
    在这里插入图片描述
    注意:16位机器时,int是2字节,现在一般是32和64,所以是4字节或者8字节,大小分机器。

整型是指不带小数的数字:(int,short int,long int, unsigned int, unsigned short int,unsigned long int)
在这里插入图片描述
注:
int short int long int是根据编译环境的不同,所取范围不同。
而其中short int和long int至少是表中所写范围, 但是int在表中是以16位编译环境写的取值范围。
另外 c语言int的取值范围在于他占用的字节数 ,不同的编译器,规定是不一样。
ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VS里,一个int是占4个字节的。

浮点类型是指带小数点的数据:float、double、long double。
在这里插入图片描述
注意:C语言不存在字符串变量,后面会讲一种字符数组,效果与字符串一样。

  • 格式化输出语句
    格式化输出语句,也可以叫占位输出,是将各种类型的数据按格式化后的类型和指定的位置输出到屏幕。
    其格式为:printf(“输出格式符\n”,输出项);
    在这里插入图片描述
#include <stdio.h>
#include <stdlib.h>

int main()
{//char* 是字符指针,这里指向文字常量区,不可修改qi
	int age = 10;
	char* name = "Cain";
	printf("%s今年%岁了\n",name,age);  //输出:Cain今年10岁了
}

注意:格式化的个数一定要与输出项一致,不能多也不能少。

  • 常量
    常量:程序运行(run)过程中值不能改变的量,叫做常量。
    C语言中常量可分为直接常量和符号常量。
    直接常量(字面量):
    整型常量:10,20,30,-10等
    实型常量:20.1,10.2等
    字符常量:‘M’,‘a’等
    字符串常量:“hello,Cain!”、"程序运行中…"等
    代码如下:
#include <stdio.h>
#include <stdlib.h>

int main()
{	//整型
	int a =10;
	int b = 20;
	printf("a=%d,b=%d\n",a,b);
	//实型
	double c = 20.1;
	printf("c=%f\n",c);
	//字符
	char d = 'M';
	printf("M=%c\n",d);
	//字符串常量
	char* e = "hello,Cain!";
	char* f = "程序运行中";
	printf("e=%s\n",e);
	printf("f=%s\n",f);

	getchar();  //类似system("pause");使小黑窗口停下来
	return 0;
}
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量值			
#include <stdlib.h>
#include <stdio.h>
#define MAXSIZE 1024  //定义一个宏常量.MAXSIZE在程序中就等价于1024,注意,后面没有分号。

int main()
{
	char buffer[MAXSIZE];
	//等价于: char buffer[1024];
	
	return 0;
}

注意:符号常量(宏常量)不能被改变。编译初期就已经被定义好了,预处理的时候

  • 自动类型转换
    强制类型转换是通过定义类型转换运算实现.
    (转换成什么数据类型)现有数据类型或者表达式(表达式+括号)
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char c = 'a';
	char a = 'b';
	//强制转换为整型
	printf("i = %d\n",(int)c);

	//转换表达式,都加括号,不然是临时转换一个值。
	int ret = (int)(c+a);
}

注意:强制转换后的结果不遵循四舍五入原则!

  • 运算符
    C语言中运算符分类大致为一下几类:
    算术运算符
    赋值运算符
    关系运算符
    逻辑运算符
    三目运算符
  1. 算术运算符:
    如图:
    在这里插入图片描述 (图片来源于网络,侵权即删)
    简单举例,代码如下:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a = 10;
	int b = 5;
	double tmp = 2.0;
	double temp;
	int c; //不赋值,只是定义变量,前面有讲。
	//加法运算符
	c = a + b;  //result:15
	//减法运算符
	c = a - b; //result:5;
	//除法运算符(very special)
	c = a / b; //result:2  第一种情况:整数相除,结果为整数。
	temp = a / tmp; //result:5.000000 第二种情况,浮点类型相除,或者浮点类型与其他类型搭配相除,结果为浮点类型,默认f打印时,默认打印小数点后6位。
	//乘法运算符
	c = a * b; //result:50
	//求余运算符%(very special)
	c = a % b; //result:0  余数为0 整数相余
	10.0 % 3;  //error,原因:表达式必须是整型
	//自增运算符
	a++; //当前行结束result:a = 11;
	//自减运算符
	a--; //当前行结束result:a = 10;  PS:因为前面++了一次,所以这里是10;
//当然自增自减运算符还分前置加加,后置加加,前置减减,后置减减,只有配合内存(指针才会有讲的,所以留到指针我们继续探讨,暂时介绍到这里,知道有这么个东西即可。)

	system("pause");
	return 0;
}

自增自减运算符
Ps:C语言中没有乘方这个符号,也不能 × 和 ÷; * 与 / 代替了他们
3. 赋值运算符:
C语言中赋值运算符分为简单赋值运算符与复合赋值运算符两种,代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	//1.简单赋值运算符
	int a = 10;
	int b = 2;
	int c;
	c = a; //简单赋值
	
	//指针:(后面会说,简单提一下)
	int *p = &a; //地址赋值,都是简单的赋值.
	//复合赋值运算符
	b += a; 
	b = b + a; //两种写法一样,上面是缩写,也叫复合运算符,还有*=,/=,-=	

	system("pause");
	return 0;
}
  1. 关系运算符:
    关系运算符
    ps:关系运算符的值要么为1,要么为0,代码如下:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a = 10;
	int b = 20;
	if( a < b)
	{
		printf("表达式值为1,即真!");
	}
	else
	{
		printf("表达式值为0,即假!");
	}

	//特别注意比如<=,!=这种组合符号形成的运算符,中间不能有空格
	system("pause");
	return 0;
}
  1. 逻辑运算符:
    逻辑运算符
    逻辑运算符的返回也是1和0,即真和假,其实准确的说不能叫返回,他们运算之后的结果吧。

逻辑与(例):5>3 && 3<1 参加运算的两边同时为真时,结果才为真。否则为假
简记:有假则假,同真才为真。

C代码片段:

int a = 10;
int b = 20;
if(a > 5 && a < b)
{
	printf("真!");
}
else
{
	printf("假!");
}

逻辑或(例):5>3 && 3<1 参加运算的两边同时为假时,结果才为假,否则为真
简记:有真则真,同假才为假。

C代码片段:

int a = 10;
int b = 20;
if(a > 5 || a > b)
{
	printf("真!");
}
else
{
	printf("假!");
}

逻辑或(!):5>3 && 3<1 此运算符是作用一方,相当于数学中的相反数。
简记:原假我为真,原真我为假。

C代码片段:

int a = 10;
int b = 20;
if(!(a > 5) || a > b)
{
	printf("假!");
}
else
{
	printf("真!");
}
  1. 三目运算符:

三目运算符的标准格式为:表达式1 ?表达式2 :表达式3
a>b?c:d
解释:如果a>b 结果为真,则语句结果为c ,如果a>b结果为假,则结果语句结果为d

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a = 10;
	int b = 20;
	//下面给c用三目运算符的初始化
	int c = a > b ? a : b; //result: 20
	
	system("pause");
	return 0;
}
  1. 运算符优先级
    在这里插入图片描述
    优先级为1最高,优先执行,以此类对,10最低,最后执行。

可能这篇文章写到这里就只能先放弃了,发现对于整理的结构有所疏漏,后面整理好了之后,做一个脑图,结合脑图来写一个完整的。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cain Xcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值