C语言学习目的及基础入门

东哥开发实战第一周 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位系统各数据类型对比:


    转自CSDN C语言入门经典——基础知识(数据类型)(32位与64位系统基本数据类型的字节数).png

(四)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;
}
上式运算结果.png

printf.png

(六)scanf函数格式化输出

  • scanf() 函数用来格式化输入数据,即按用户指定的格式从键盘上把数据读入到指定的变量中。其原型为:int scanf ( char * format [ ,argument, … ]);
    【参数】format为格式化控制字符串,可以由三类字符构成。
  • 一般变量都需要进行 & 取地址
  • 当用户在终端输入数据时,数据会被存放到 缓存流,scanf用于在缓冲流中找到数据将其放到给定的位置
  • 放到给定位置就是保存输入的数据,保存数据需要用到的变量,我们只需要把数据送到对应的地址,就存储好了该数据,就可以通过该变量使用该数据。所以进行 & 去地址。
\\输入输出两条数据
Int a = 0 ,  b = 0;
scanf(“%d %d”,&a , &b);
printf(“%d %d”,&a , &b);
scanf.png
  • 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时回到本次循环开头
    }

感谢观看,求赞求赞

你可能感兴趣的:(C语言学习目的及基础入门)