您的位置:首页 > 编程语言 > C语言/C++

C语言学习笔记1

2015-11-28 21:50 483 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_17726067/article/details/50087815

C语言学习笔记记录


main函数,作为程序的入口,只有一个。


基本的数据类型: 整型 int

实型 float / double

字符型 char //用来修饰 变量, 变量即程序运行过程中可以改变的量。


变量的命名规则: 1.以字母、下划线开头、中间可以包含数字,但是不能以数字开头
2.可以使用美元符号开头($),但是不建议
3.见名知意
4.不可使用系统保留字


变量的赋值方式: 1.直接赋值//int a = 10; int b;

2.由变量赋值 //b = 10;

3.通过控制台赋值 //#define PI 3.14


关于 i++ 和 --i 的区别: ++i 为i先自加1在运行,i-- 为先运行在自加1

算术运算符:+,-, *, /, ++, --;

赋值运算符:= ,+= ,-=,*=,/=,%=;


C语言中有一个 bool 类型,此类型在 stdbool.h中 :bool类型有两种取值, true 或 false,布尔类型本质上也是整型。//true表示1,false表示0

对于关系运算符组成的表达式来说,其结果也是布尔类型


关系运算符: 对于逻辑与,前面的条件不满足,后面的条件不执行;

对于逻辑或,前面的条件满足,后面的条件不执行;

三目运算符: int c = a>b?a:b;//把最大值赋给c


强制类型转换: 例: int n1 = 3;

int n2  =4;

1.隐式转换:int a = n1 /n2;

2.显示转换:int a = (int)(n1 / n2);

运算符的优先级: 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符


输出语句: printf("输出内容\n");//\n为换行符

输入语句: scanf("%d",&x);//%d表示整型占位,也有实型占位%f,字符型占位%c,&x表示将输入的数存入x中

当输出实型占位的时候,%.2f表示输出的数保留2位小数点

sizeof()运算符:能够直接确定编译器中任何数据类型或变量所占用的字节数,使用方法为 int a = sizeof(int);


条件分支结构: if 和 switch 语句

if语句使用:

      1.当if语句条件满足时,执行if语句中的语句块,否则不执行if语句

      2.if..else分支语句使用:当if语句条件满足时,else语句不运行;当if语句条件不满足时,运行else语句

      3.if..else if..else语句使用:当if语句条件满足时,运行if语句,其他程序

switch语句使用:1.switch的分支结构为:

switch(整型表达式){

case 数值1:

语句;

break;

case 数值2;

语句;

break;

...

default:

语句;

break;

}

2.判断整形表达式中的数值,当它满足case数值中的其中1个时执行该语句块,否则执行default中的语句,需要注意switch中的整形表达式,如果该表达式产生的值不少整型,将导致错误。


break 和 continue:

break 表示终止本层循环;

continue表示 终止本次循环,进入下次循环


3种循环结构: do while 循环、while循环、for循环

do while 循环:先循环一次,再执行循环条件,如果循环条件为真,则继续执行循环体,直到循环条件为假时,则跳出循环;

while 循环:先判断循环条件,当循环条件为真,则执行循环体,否则不执行循环体,与 do while 循环不同的是do while循环无论循环条件真假,至少执行一次循环体;

for 循环:for循环形式为: for(初始化语句;判断语句;改变语句){ 循环语句; }for循环运行时,首先执行初始化语句,然后执行判断语句,如果为真则进行循环,循环完成后执行改变语句,再继续判断语句的真假,若为真则继续循环,否则跳出循环。简单来说就是:1.初始值 2.判断条件 3.自增或自减 4.循环体  //初始化语句只执行一次就不再执行

三种循环结构可以相互转换


在进行循环嵌套时需要注意花括号以及分号的使用


枚举:就是说声明一个集合,再利用该集合来定义一个整型,该整型的值只能取集合里的值

此时  enum weeks x; 即表示用枚举定义了一个值x,而x的值只能够是weeks集合里的值;

在enum weeks里,假如没有定义数值,则默认为集合里第一项的值为0,然后每一项依次加1,若第二项的值定义为10,则第一项的值为0,第二项为10,第三项为11,以此类推

枚举有2中声明方法:第一种为关键字enum 集合名{数值1,数值2,... 数值n};    /* 分号在花括号外面 */   如 enum weeks{a,b,c,d,,f,g};

第二种为  typedef enum{ a,b,c,d,e,f,g} weeks;


/t 表示水平制表       \n 表示换行


常量:不能改变的值称为常量,如1 ,2, 3,;

可以通过关键字const将一个变量变为常量,如:const int i = 10;


宏:除了可以使用关键字const来定义常量以外还可以使用宏定义常量

使用方法为#define PI  3.14 //此处PI为定义的常量名称,此后代码中所有的PI都会被3.14替换


全局变量以及局部变量:全局变量指整个程序中都可以使用,而局部变量至少在定义它的那个{}里可用

对于auto类型的局部变量,出了函数以后不能使用

对于static类型的局部变量,能够在程序运行期间一直保持其最后一次被改变的值


自定义函数:即首先定义一个函数,然后在程序中调用这个函数

函数定义有4种类型:1.有返回值有参数类型 int hanshu1(int a,intb) { int max = a; return b;}

2.无返回值无参数类型 void hanshu2() { printf("无返回值无参数\n"); }

3.有返回值无参数类型 int hanshu3() { int max = 0; return max; }

4.无返回值有参数类型 void hanshu4(int max) { printf("max = %d'n",max); }

函数,可以实现代码的重用;简洁代码;


函数的声明:想要自定义一个函数,首先得先声明有这个函数,不然编译器编译到自定义函数的时候不知道这个函数是什么,就会出错

如果要定义一个整型函数如 int hanshu(int a,int b),那么就需要在main函数的前面,将程序需要用到的函数声明或定义出来

函数的声明格式:int hanshu(int a,int b); //需要注意函数的声明需要加分号


形参和实参:1.形参(形式参数),在定义函数的时候使用,并且在整个函数内部可以使用,除了函数以后不能使用//形参:变量、数组

2.实参(实际参数),在调用函数的时候使用,通过实际参数,将数据传递给形式参数,然后再经由形式参数传递给函数//实参:同类型的常量、变量、数组元素、表达式、数组

需要注意的是如果在函数中对形参做出改变,那么在函数执行完毕后实参的值也不会发生改变,因为在函数内部所操作的都是实参的副本。


C程序源代码格式的一般情况:

预编译语句

宏定义常量

函数的声明

main函数

函数的定义


函数的递归:简单来说就是在函数里调用函数本身,例如求阶乘,有两种方法,递归以及迭代。递归代码简单许多,但系统开销要比迭代大,所以通常尽量用迭代解决问题。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: