您的位置:首页 > 运维架构 > Linux

C语言基础知识-苏嵌实训 嵌入式 linux C 第 3 天

2020-07-13 06:12 639 查看

项目开发日报表:

项目名称 苏嵌实训-嵌入式Linux 第3天
今日进度及任务 嵌入式C实战详解1-开发流程、编码规范
任务完成情况 课堂学习整理已完成
课后编程题已完成
开发时出现的问题
未解决的问题 编程速度比较慢,C语言掌握的不够好,需要多加练习
开发收获 对C语言有了更加深入的了解,巩固复习C语言基础知识
其他

    

课堂知识总结:

    

1.C语言概述

  • C语言之父: 丹尼斯·里奇

  • C语言的特点:
        面向过程。
        直接访问硬件,运行效率,移植性。
    <C语言为什么能够直接访问硬件?>
      因为C语言有指针类型
    <嵌入式开发为什么选择C语言?>
      所有操作系统的内核都采用了C语言;
    <Python最终替代所有的编程语言?>
      不会,Python是解释性语言,不可能替代C语言

  • C语言标准?
        K&RC 、C89、C99、C11

C语言标准 基础概述
K&RC(经典C) 1987年,Brian Kernighan 和 Dennis Ritchie合著的The C Programming Language 第1版
是公认的C标准。它定义了c语言,但没有定义c库。它不是官方的标准。
ANSIC/C89 C99 标准引入了许多特性,包括内联函数(inline functions)、可变长度的数组、灵活的数组成员(用于结构体)、复合字面量、指定成员的初始化器、对IEEE754浮点数的改进、支持不定参数个数的宏定义,在数据类型上还增加了 long long int 以及复数类型。
C99 是ISO / IEC 9899:1999的非正式名称,1999年推出。它扩展了以前的版本( C90 ),增加了语言和标准库的新功能,并帮助实现更好地利用可用的计算机硬件,如IEEE 754-1985浮点运算和编译器技术,最主要的增强在数值处理上。2011年发布的C编程语言标准C11版本取代了C99。
C11 引入字节对齐说明符、泛型机制(generic selection)、对多线程的支持、
静态断言、原子操作以及对 Unicode 的支持。
  • 如何学习C语言?
        写代码并不是大量的看书、项目

    

2.数据类型

  • 所有的数据类型的定义、初始化:

    printf(“a = %p\n”,a);//a+1增加一个数组元素长度
    printf("&a = %p\n",&a);//&a+1增加一个数组长度

  • 右左法则:

    1)确定a是一个变量,就要确定该变量保存什么类型的数据,保存什么类型的数据,它就是什么类型的变量;
    2)确定a是一个指针变量,就要确定该指针变量保存什么类型的地址,保存什么类型的地址,它就是什么类型的指针变量;
    3)确定a是一个数组,就要确定数组里的元素是什么类型的,元素是什么类型,它就是什么数组;
    4)确定a是一个函数,就要确定函数的形参和返回值;

int a; //一个整型数
int *a; //整型指针变量
int **a; //整型指针的指针变量
int a[10]; //整型数组
int *a[10]; //整型指针数组
int (*a)[10]; //数组指针变量,指向的是整型数组
int (*a)(int); //函数指针变量,指向的是形参为int,返回值为int
int (*a[10])(int); //函数指针数组,

  • 各种数据类型的字节长度(所占内存空间的大小)及取值范围;
    基本类型字节长度:

    int   4
    char   1
    short  2
    long   4
    float   4
    double  8

    指针变量的字节长度
    指针变量的字节长度是固定的!!
    <因为指针保存的是地址,地址在操作系统中是固定长度,长度是由操作系统位数决定的,
    32位系统,指针是4个字节;64位系统,指针是8个字节>

    Sizeof VS strlen:
    1)sizeof是运算符,不是函数;作用:计算数据类型或者变量的所占内存空间的大小。
    2)strlen是字符串库函数;作用:统计当前字符串的字符个数,不包含\0。
    3)sizeof在计算字符串的大小时包含\0

  • signed\unsigned
        

3.输入输出

  • printf:

    <格式化控制符>//行缓冲,满一行才输出

  • scanf:

    用scanf输入字符的时候需要先用getchar()将缓冲区里面的回车取走

  • getchar
  • putchar
  • gets
        

4.运算符、基本控制语句

  • i++; ++i;

逻辑运算符 &&  || !

  • 位运算
  • while  for //已知循环次数用for,不知循环次数用while
  • if  switch  case
  • break  continue
  • goto:异常处理
    //函数传参从右边开始传参
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: