东哥开发实战第一周 2019-11-15
目录概述
- 一、C语言学习目的
- 二、C和C++的区别
- 三、程序开发过程
- 四、C语言基础知识入门
|(一)注释的使用
|(二)include导入头文件与#define的使用
|(三)基本数据类型
|(四)main函数的使用
|(五)printf函数格式化输出
|(六)scanf函数格式化输入
|(七)变量
|(八)运算符- 五、C语言基础语句
- 六、C语言控制结构
|(一)
一、C语言学习目的
- 两个面试
- 后期服务JNI (C语言) C JAVA 编程能力 编程思想
二、C语言和C++的区别
- C:面向过程:小王 走进教室 拿出电脑 开始听东哥的课
- C++:面向对象:
谁上课 Teacher (姓名 身高 年龄 授课) ->东哥
谁来听 Student (姓名 身高 年龄 学号 选修课) ->小王
什么课 Sbuject (课程编号 课程名称) ->Android开发
哪里上 Classroom (编号 座位数) -> 5405
怎么上 Computer (。。。。。)-> Hasee
三、程序开发过程
- 1.选择开发工具IDE: DevC++ Android Studio
2.创建项目 写代码
3.运行
4.结果
编译器 - 将高级语言转化为机器语言
- 1.写代码 例
#include
int main()
{
printf("Hello world");
return 0;
}
- 2.预编译 ->编译器(制定规则)
gcc -E test.c -o test.i
a.展开 - 3.编译 -> 高级语言转化为 汇编代码
gcc -S test.i -o test.s
a.检查语法错误
b.转化为汇编代码 - 4.汇编 -> 把汇编代码转化为二进制数据
gcc -c test.s -o test.o
a.转化为目标文件——二进制数据 0101010011001001 - 5.链接 -> 将所有目标文件链接为可执行文件(所有 xx-o —— .exe)
gcc -o test.o test
cios
四、C语言基础知识
(一)注释的使用
- 1.//单行注释
- 2./* 多行注释 */
(二)include导入头文件与#define的使用
1、include
- 即“宏” 导入头文件,如果系统已经提供某些功能的实现,只需要使用include将这些功能所在的头文件导入进来就可以了。头文件类型有两种,以下为他们的写法和不同点:
#include
编译器首先从 系统的类库 里面去查找这个头文件,如果没有,再到自己的文件中查找
#include "iostream"
编译器首先从 自己的文件 里面去查找这个头文件,如果没有,再到系统的文件中查找
2、define
- "#define可以为类型定义别名
#define INT int
- "#define可以为数值定义别名。这时达到了定义一个常量的效果
#define KILLED -1
- 使用#define的好处在于一方面加强了代码的可读性,另一方面是增强可操作性便于代码修改。(当多出使用#define定义的别名时,别名对应的数值需要修改时,可以直接再#define处快速修改)
(三)基本数据类型
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。在不同的系统上这些类型占据的字节长度是不同的:
- int 整数 64位系统里面占4个字节 (以下同64位系统) 最多
输出格式:%d %02d 不足的补齐 01
-short 短整型 占2个字节内存空间
输出格式:%hd
- long 长整型 占8个字节内存空间
输出格式:%ld
- float 浮点型 占4个字节内存空间
输出格式:%f %.1f 保留1位有效数字
- double 双精度浮点型 占8个字节内存空间
输出格式:%f 或 %lf
- char 字符型 占1个字节内存空间
输出格式:%c 输出字符 %d输出ASCII码值
- char* 字符串型 占8个字节内存空间 C++中 string同为字符串
输出格式:%s 输出字符串
- bool 布尔类型 true/false 1/0 非零即真 零即假
定义变量和声明变量的区别
定义一个整形变量 立刻为我们分配内存空间 如:int a = 1;
特点:运行时占空间,使用时效率高
声明一个整型变量 没有分配内存空间 如:int b; b = 20;使用的时候才会分配内存空间
特点:运行时不占空间 使用时速度慢一点
-
下面是32位系统与64位系统各数据类型对比:
(四)main函数的使用
main(int argc, char** argv)函数
main函数=代码块=完成特定任务,所有程序的入口点都是main函数;int返回值: 记录当前程序的运行状态 ; 0:正常结束 资源自由分配 ; 非0:1 异常结束 没收资源
int argc:参数个数
char*argv[]: 每个参数组成的字符串数组
(五)printf函数格式化输出
- printf输出语句,用来让终端输出数据,数据类型不同,输出方式不同,常见方式请见(三)
- 打印常量字符串
- 转义字符:\a 警告 \b 退格 \f 换页 \n 换行 \r 回车 \t 跳格 \v 垂直跳格
int main(int argc, char*argv[])
{
printf("%d\n",argc);
printf("%s\n",argv[0]);
printf("Hello World\n");
return 0;
}
(六)scanf函数格式化输出
- scanf() 函数用来格式化输入数据,即按用户指定的格式从键盘上把数据读入到指定的变量中。其原型为:int scanf ( char * format [ ,argument, … ]);
【参数】format为格式化控制字符串,可以由三类字符构成。 - 一般变量都需要进行 & 取地址
- 当用户在终端输入数据时,数据会被存放到 缓存流,scanf用于在缓冲流中找到数据将其放到给定的位置
- 放到给定位置就是保存输入的数据,保存数据需要用到的变量,我们只需要把数据送到对应的地址,就存储好了该数据,就可以通过该变量使用该数据。所以进行 & 去地址。
\\输入输出两条数据
Int a = 0 , b = 0;
scanf(“%d %d”,&a , &b);
printf(“%d %d”,&a , &b);
- getchar():从缓冲区读取一个字符
(七)变量
- C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的。
局部变量:{}里的代码从开始到结束,局部变量的优先级最大
int a = 20; //全局变量
int main()
{
int a; //局部变量
printf("a",a); //输出第二个 int a 即局部变量
if()
{
int a=10; //(更小的)局部变量
}
- 在C语言中,如果按存储占用空间来分,包括:
整型变量(代码为int),整型变量包括长整型变量(代码为long int)以及短整型变量(代码为short int),字符型变量(代码为char),浮点型变量(代码float)等。当然还有数组,结构体变量等.但新手需要注意的是,每一种变量类型最终都对应的格式字符.如:%d。 - C语言还有一个重要变量:指针变量.它存放的值是一个内存地址。
- C语言中变量名是有大小写之分的,如SUN与sun就是两个不同的变量名。
另一点,声明变量时,可以不用声明就直接赋值来决定变量类型的语言,这类语言变量的声明通常被称为弱类型,而如(c++等)必须先声明,后使用,而且声明时必须确定变量类型,这种就是严格的数据类型。
变量有两种类型:属性变量和用户自己建立的变量。
(八)运算符
- C的运算符有以下几类:
1.算术运算符:* - + / % ++ (a++先赋值后运算 ++a先运算后赋值)
2.关系运算符: > < == != >= <=
3.逻辑运算符:! && ||
4.位运算符:<< >> ~ | ^ &
5.赋值运算符:=及扩展赋值运算符
6.条件运算符:?
**问号表达式** c = 3 >1 ? 'y':'n';
char c;
if(3>1){c='y';} else{c='n';}
运行结果 输出 y
7.逗号运算符:,
**逗号表达式** int result = (表达式1,表达式2,表达式3)
int temp = 20;
int t2 = (temp--,temp--,temp--);
if(t2)
{
printf("temp = %d\n",temp);
printf("t2 = %d\n,t2);
}
运行结果 输出 temp=17 ; t2=18
8.指针运算符:*和&
9.求字节数运算符:sizeof
10.强制类型转换运算符:(类型)
11.分量运算符:. ->
12.下标运算符:[ ]
13.其他:如函数调用运算符:()
注意:条件运算符是C语言中惟一一个三目(三元)运算符
- 运算符优先级
优先级与求值顺序无关。如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后结合。
五、C语言基础语句
C语句分类
- 控制结构(详见下文)- 顺序 循环 分支(选择)
- 函数调用语句
- 表达式语句
- 空语句
- 复合语句
六、C语言控制结构
if语句
******************************************
if(表达式)
{
语句1;
语句2;
} // if下的各独立语句用分号分隔。
******************************************
if(表达式) 语句1; else 语句2;
******************************************
if(表达式1)
语句1;
else if(表达式2)
语句2;
···
else if(表达式n)
语句n;
else
语句n+1;
switch语句
switch 可读性
switch(已经确定值的变量-int-char)
{
case 10 'a' ; break ;
case 10 'b' ; break ;
default ; break ;
}
int a = 0;
cout << "请输入一个数字1-3:";
cin>>a;
switch(a)
{
case 1:
cout<<"你输入的是1"<
for循环语句
for(循环控制变量;运行的条件;控制变量的变化)
for循环中间条件是必要的,其他部分可以省略,分号“;”不能省略
for(;1<2;)
for(int i=0 ; i<10 ; i++)
循环控制变量的定义和初始化只执行一次
//输出1-10之间的整数
for(int i=0;i<=10;i++)
printf("i ",i);
//不断输出1-10之间的整数
for(int i=0;1<2;i++)
{
i = i%10;
if(i == 0)
printf("i = %d ",i);
else
printf("i =%d ",i);
}
while循环语句
while(表达式){
语句块
}
//表达式 : 循环条件
//语句块:循环体
1.先计算“表达式”的值,当值为真时,执行”语句块“
2.执行完“语句块”,再次计算表达式额值,如果为真,继续执行“语句块”
3.重复执行这个过程,指导表达式的值为假
break
跳出“if,switch”循环
输出1-10之间的整数 ,在5处暂停
for(int i=0;i<=10;i++)
{
printf("%d ",i);
if( i == 5)
break; //当i=5时跳出本次for循环
}
continue
停止运行下列代码,回到本次循环开头继续运行
输出1-10之间的整数 ,除了5
for(int i=0;i<=10;i++)
{
printf("%d ",i);
if( i == 5)
continue; //当i=5时回到本次循环开头
}
感谢观看,求赞求赞