C语言简介

前言

BCPL->newB->C语言->UNIX->Minix->Linux->gcc C语言诞生与1970-1973年之间,在肯.汤普逊和丹尼斯.离奇的主导编写下完成,归属于贝尔实验室。 C语言专门为了编写操作系统而诞生的语言,所以天生适合硬件编程,以运行速读快著称,同样的也非常适合数据结构与算法 由于出现的时间过早,C语言是存在非常多的缺陷,也没想到普通人也能使用C语言编程,因此就存在陷阱,但是前辈们都总结了一些避免的经验《C语言的陷阱与缺陷》C语言三剑客 C语言的语法很自由,也意味着危险,自由源于自律
  C8919语法标准,gcc默认的语法标准
  C99语法标准,对C89标准的扩展和增强 -std=gnu99 -std=c99
  C11语法标准,全新的升级

提示:以下是本篇文章正文内容,下面案例可供参考

一、第一个C程序

 #include<stdio.h> 程序员所编写的代码并不是标准的C代码,需要一段程把他翻译成标准的C代码,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的代码都是预处理指令
 #include 的功能是把一个头文件导入到当前的文件中
 #include <> 从系统指定的路径下加载头文件
 #include "" 先从当前路径下加载头文件,如果找不到,再从系统指定的路劲下加载头文件
 操作系统是通过设置环境变量来指定加载头文件的路径
 stdio.h 
    头文件:以.h结尾,里面存储的是一些辅助性的代码,绝大部分是函数的声明
    源文件:以.c结尾,里面储存的是功能性的代码
    C语言标准委员会为C语言以函数的形式提供了一些基础功能,这些函数就被封装到了libc.so库文件中
    用很多头文件负责对库中的函数进行分类说明,stdio.h就是其中一个,常用的还有stdlib.h string.h 
    stdio.h 负责对输入输出功能的函数进行说明
 main函数:function
      C语言以函数单位来管理代码,是管理代码的最小单位,一个函数就是一段具有某项功能的代码段
      main函数是程序的执行入口,有且只有一个
      int是一种数据类型,他表示main函数的执行结果是一个整数
      return 功能有两个:1、结束函数的执行 2、返回一个数据给函数的调用者
      main是由操作系统调用的,他的返回值是给操作系统的,反映了程序是怎么样结束的,通常有三种情况:
      正数  出现异常(别人的错误)
      0    一切正常
      负数  出现错误(自己的错误)
      可以通过echo $? 命令查看上一个程序的返回值
      
      printf/scanf 是标准库中的函数,负责输入、输出数据,一般用来调试代码
      转义字符:键盘上一些按键是不能符号的,用一些特殊的字符组合来表示,这些特殊字符组合就是转义字符。
      \n 换行
      \b 退一个字符 \b \b 
      \r 回到行首
      \t 制表符,用于对齐
      \a 铃响
      \\ 表示一个\
      %% 表示一个%
      C语言是以分号作为一行代码的结束,使用大括号划分区域

代码如下(示例):

#include<stdio.h>
int main()
{
	printf("Hello world");
}

二、编译器

负责把人能开的懂的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器
gcc是由gnu组织为了编译linux内核代码而开发的一款免费、开源的编译器,默认采用C89标准,-std=gnu99可以设置语法标准
   常用的参数:
         -E 显示预处理的结果
         -c 只编译不链接
         -o 设置编译结果的名字
         -I 指定头文件的加载路径
         -S 生成汇编代码
         -l 指定要使用的库文件 -lm
         -Wall 以更严格的标准来检查代码,尽可能多显示警告
         -Werror 把警告当错误处理

三、C代码变成可执行程序的过程

1、预处理  把源文件翻译成预处理文件
      gcc -E  .c 显示预处理的结果,不生成文件
      gcc -E  .c -o .i 生成以.i结尾的预处理文件
 2、编译    把预处理文件翻译成汇编文件
      gcc -S  .i  默认生成.s结尾的汇编文件
 3、汇编    把汇编文件翻译成二进制的目标文件
      gcc -c  .s  生成以.o结尾的目标文件
 4、链接    把若干个目标文件合并成一个可执行文件
      gcc a.o  b.o ...  默认生成一个 a.out 的可执行文件
 
 C语言的文件类型:
      .h 头文件
      .h.gch 头文件的编译结果,它会被优先使用
      .c 源文件
      .i 预处理文件
      .s 汇编文件
      .o 目标文件
      .a 静态库文件
      .so 共享库文件

四、数据类型

 为什么要对数据进行分类:
      1、现实社会中的数据本来就是自带类别属性
      2、对数据进行分类后可以节约存储空间,可以提高运行效率

  存储空间的单位:
  bit 比特 一个二进制位,只能存储0或者1,计算机存储数据的最小单位
  byte 字节 八个二进制位计算机存储数据的基本单位
  kb 1024字节
  mb 1024kb
  gb 1024mb
  tb 1024gb
  pb 1024tb

  C语言数据分为两大类:自建(程序员自己设计的:结构、联合、类)和内建(C语言自带的)
  内建类:
      注意:可以使用sizeof运算符计算类型的字节数
      整形:
          有符号:signed
                signed char           1   -128~127
                signed short          2   -32768~32767
                signed int            4    正负20亿
                signed long           4/8
                signed long long      8    正负9开头19位数
          注意:signed 不加就代表加
          无符号:unsigned 
                unsigned char           1   0~255
                unsigned short          2   0~65535
                unsigned int            4   0~40亿
                unsigned long           4/8
                unsigned long long      8   0~1开头的20位整数
          注意:由于定义无符号数据时比较麻烦,标准库把这些无符号的类型重新定义成了以下类型:
                使用时需要包含头文件:stdint.h
                uint8_t  uint16_t uint32_t uint64_t
                int8_t  int16_t int32_t int64_t
      浮点型:
          float              4
          double             8
          long double        12/16
          注意:采用科学计算方法,二进制与真实数据之间需要进行换算,因此浮点数型数据耗时要比整型数据多得多,编程时尽量选择整型
          小数点后六位有效

      模拟型:
         字符型char
             字符其实就是符号或图案,内存中存储的是整数,当需要显示成字符时会根据ASCII码表中对应的关系显示出相应的符号或图案
             '\0' 0
             '0'  48
             'A'  65
             'a'  97
         布尔型bool
             现有的C语言之后才有了bool类型,所以C语言中是不可能有正真的布尔类型,用时加stdbool.h 头文件进行模拟布尔类型
             bool true(1) false(0)

五、变量与常量

变量:程序在运行期间数据可以变化的叫做变量,相当于存储数据的盒子
     定义:
        类型:变量名;
        1、由字母、数字、下划线组成
        2、不能以数字开头
        3、不能与C语言关键字重名
        4、见名知意(功能、类型、范围...)

     使用: 
        赋值:    num=100;
        参与运算:num*100
     注意:变量的默认值时随机的,为了安全起见要进行初始化,一般初始化为0。

     变量的输出和输出:
        输出:
        int printf(const char *format,...);
        功能:输出数据
        format:"双引号包含的格式信息(提示信息+占位符)"
        ...:变量的列表
        返回值:输出字符的个数

        类型占位符:C语言通过占位符的方式来传递变量的类型
        %hhd  %hd %d %ld %lld  有符号的
        %hhu  %hu %u %lu %llu  无符号的
        %f    %lf %LF          
        %c    %s               

        输入:
        int scanf(const char *format,...);
        format:"双引号包含的格式信息(占位符)"
        ...:变量的地址列表 &变量名
        返回值:成功输入的变量的个数
        注意:scanf需要的是变量类型、变量地址
        变量地址=&变量名

六、总结

这是关于C语言的一些基础知识的总结,如有不对之处,还请指出,多多包涵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值