——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——
一、C程序
1、C程序是由函数构成,其源文件拓展名为.c 或者 .C
2、C程序的源文件不能直接运行,因为计算机只能识别0和1,源文件包含了很多C语言的英文代码,计算机是不可能看懂的
3、C程序从开发到运行需要哪些步骤?
1> 编写.c源文件
2> 编译.c源文件为.o目标文件
3> 链接.o目标文件为可执行文件
4> 运行可执行文件
4、拓展名为.c、.o、.out分别是什么文件?在C程序开发的哪个阶段产生的?
1> .c是C语言源文件,在编写代码的时候创建
2> .o是目标文件,在编译成功的时候产生
3> .out是可执行文件,在链接成功的时候产生
5、关键字
关键字就是C语言提供的有特殊含义的符号,C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
全部都是小写
6、注释
注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流。
1)单行注释
单行注释以//开头,只能注释一行
2)多行注释
多行注释以/开头,以/结尾,/和/中间的内容都是注释
3)注释的作用
被注释的代码不会参与编译
4)注释的嵌套现象
单行注释可以嵌套单行注释、多行注释
// 哇哈哈 // 呵呵呵
// /* fsdfsdf */ // sdfsdfsd
多行注释可以嵌套单行注释
/*
// 作者:MJ
// 描述:第一个C语言程序
作用:这是一个主函数,C程序的入口点
*/
多行注释不能嵌套多行注释
/* 哈哈哈
/嘻嘻嘻/
呵呵呵 */
二、数据
1、数据的分类
计算机中存储的数据可以分为两种:静态数据和动态数据。
1)静态数据
指一些永久性的数据,一般存储在硬盘中。
存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在。
静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。
2)动态数据(临时数据)
指在程序运行过程中,动态产生的临时数据,一般存储在内存中。
存储的时长:计算机关闭之后,这些临时数据就会被清除。
哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。
内存的访问速度比硬盘快N倍。
2、数据的大小
不管是静态还是动态数据,都是0和1组成的。数据越大,包含的0和1就越多
1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB
3、C语言中的数据类型
1)常量
表示一些固定的数据
常量的分类
1> 整型常量(int)
包括了所有的整数,比如6、27、109、256、-10、0、-289等
2> 浮点型常量(float\double)
浮点型常量分为double和float两种数据类型
double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)
float:单精度浮点型,也是小数,比double的精确程度低
为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f。注意绝对不能有10f这样格式的,只有小数才允许加上f。
3> 字符常量(char)
将一个数字(0~9)、英文字母(a~z、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如’6’、’a’、’F’、’+’、’$’等。
注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:’abc’、’123456’、’男’
4> 字符串常量
将一个或者多个字符用双引号(”“)括起来,这样构成的就是字符串常量。比如”6”、”男”、”abcd”、”my_car4”
三、变量
1、变量的定义:变量类型 变量名
例:int age;定义一个名称为age的整型变量
变量名 :由英文字母、阿拉伯数字和下划线组成,且不能以数字开头
2、变量的赋值
age = 10;
3、变量的输出
printf("%d",age);
常用格式符:
1> %d\%i 整数(int)
2> %f 小数(float、double)
3> %c 字符(char)
4> %s 字符串
5> %p 地址
4、变量的使用注意
1)作用域(作用范围)
从定义变量的那行代码开始,一直到函数结束,代码块运行结束后,则及时回收不再使用的变量,提升性能
#import <stdio.h>
int main()
{
{
double height = 1.55;
height = height + 1;
printf("height=%f\n", height);
}
int a;
{
int a = 10; // a在代码块结束即释放
}
printf("a=%d\n", a);
int score = 100;
{
int score = 200;
{
int score;
score = 50;
}
printf("score=%d\n", score); // 200
}
printf("score=%d\n", score); // 100
return 0;
}
运行结果:
height=2.550000
a=0
score=200
score=100
2)变量值交换
#include <stdio.h>
int main()
{
int a = 6;
int b = 7;
// 方法1,利用第三方变量
// int temp;
// temp = a;
// a = b;
// b = temp;
// 方法2,
a = b - a;
b = b - a;
a = a + b;
printf("a=%d,b=%d",a,b);
return 0;
}
3)变量值的内存分析
1)内存寻址由大到小,优先分配内存地址比较大的字节给变量
2)变量越先定义,内存地址就越大
3)取得变量的地址:&变量名
4)输出地址:%p
5)一个变量一定先进行初始化,才能使用
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int c;
printf("a的地址是:%p\n", &a);
printf("b的地址是:%p\n", &b);
printf("c的地址是:%p\n", &c);
printf("c的值是%d\n", c);
}
运行结果:
a的地址是:0x7fff5fbff82c
b的地址是:0x7fff5fbff828
c的地址是:0x7fff5fbff824
c的值是32767
四、scanf函数
1、scanf函数只接受变量的地址
2、scanf函数是一个阻塞式的函数,等待用户输入
3、用户输入完毕后,就会将用户输入的值赋值给指定的变量
4、scanf函数不能用\n
#include <stdio.h>
int main()
{
// 1.定义变量
int num;
// 2.提示用户输入一个整数
printf("请输入一个整数:\n");
// 3.接收用户输入的整数
scanf("%d", &num);
printf("num=%d", num);
return 0;
}
五、运算符
C语言一共有34种运算
1、算术运算符
1)加法运算 +
不仅能做加法运算,还能表示正号:+5、+90
2)减法运算 -
不仅能做减法运算,还能表示符号:-10、-29
3)乘法运算 *
注意符号,不是x,而是*
4)除法运算 /
整数除于整数,还是整数。1/2的值是0,并不是0.5
5)取余运算%
两个整数相除之后的余数
1)%两侧只能是整数
2)正负性取决于%左侧的数值
2、自增自减
1)简单使用
++ 自增运算符,如a++,++a,都等价于a = a+1
– 自减运算符,如a–,–a,都等价于a = a-1
不能为常量,5++是错误的
2)++a和a++的区别
a++ 表示在使用a之后再使a的值加1;
++a;表示在使用a之前先使a的值加1;
– 自减运算符同理
3、sizeof
用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
基本形式
sizeof( 变量\常量 ) sizeof(10)
sizeof 变量\常量 int a ; sizeof a;
sizeof( 数据类型 ) sizeof(int)
不能是sizeof 数据类型
4、关系运算
在C语言中,条件成立称为“真”,条件不成立称为“假”,因此,判断条件是否成立,就是判断条件的“真假”。
任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,只有0是“假”。
5、逻辑运算
逻辑运算的结果只有2个:“真”为1,“假”为0
1)&& 逻辑与
1> 使用格式
“条件A && 条件B”
2> 运算结果
只有当条件A和条件B都成立时,结果才为1,也就是“真”
3> 运算过程
总是先判断条件A是否成立,如果条件A成立,接着再判断条件B,
如果条件A不成立,就不会再去判断条件B是否成立
4> 举例
int a = 5;int b = 10;
int c = (a++<5) && (++b>=11);
运行结果为0,a的值为6,b的值为10
2)|| 逻辑或
1> 使用格式
“条件A || 条件B”
2> 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3> 运算过程
总是先判断条件A是否成立,如果条件A成立,就不会再去判断条件B是否成立
如果条件A不成立,接着再判断条件B是否成立
3)! 逻辑非
1> 使用格式
“! 条件A”
2> 运算结果
其实就是对条件A进行取反
3> 注意
可以多次连续使用逻辑非运算符:!(4>2)结果为0,是“假”,!!(4>2)结果为1,是“真”,!!!(4>2)结果为0,是“假”
4)优先级
逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||
5)三目运算符
条件 ? 数值1 : 数值2
条件?表达式1:表达式2;
先判断条件, 如果为真, 则执行表达式1,并返回表达式1的结果 ; 如果为假, 则执行表达式2,并返回表达式2的结果。
int a = 5?10:2; 结果为10