【Linux学习(3)】----C语言编程篇(1)

一、环境搭建:

在Linux环境下先使用:

sudo apt-get update

将下载源进行更新。在更新完毕之后,再使用

sudo apt-get install gcc

将C语言的编译器进行gcc进行下载与安装,当gcc编译器安装好后,就可以愉快地进行C语言程序的编写与运行了

安装常见问题问题之一:

sudo apt-get install Xxx
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?

解决方法之一直接在当前命令行输入:

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

二、C语言的执行过程:

在Linux下C程序的执行过程简单表现为:

. c->.out

细致分解为:

C语言文件-预处理-编译-汇编-链接可执行文件

预处理: 
    gcc -E C语言源文件.c > gcc预处理之后的文件.i

编译:
    gcc -S gcc预处理之后的文件.i {生成 编译文件.s}

汇编:
    gcc -c 编译文件.s {生成 汇编文件.o}

链接:
    gcc 汇编文件.o -o 目标可执行文件

运行当前路径下可执行的文件:
    ./目标可执行文件

这是整个C语言从编译到形成可执行文件的过程,在实际开发中,常用

gcc C语言源文件.c -o 目标可执行文件

如果下载了make工具,也可以使用

make C语言源文件

三、零碎小芝士

1、C语言中:

\n------表示换行和强制刷新缓冲区

2、打印出当前C语言源文件.c文件中所有的警告和报错:

gcc C语言源文件.c -Wall

3、当gcc没有看见内建函数所存在的头文件时,默认次此内建函数的返回值是int
4、对于Linux系统内行来说只有进程概念没有线程概念
5、算法:流程图,分步骤,
6、程序:数据结构+算法
7、进程:运行的程序,开始占用资源
8、防止写越界,防止写内存泄露,谁打开谁关闭,谁申请谁释放
9、在C语言编写中有如下建议:

1,头文件正确包含的重要性
2,以函数为单位进行程序编写
3,声明部分+实现部分
4,主函数中的最后return 0是给主函数的父进程看的
4,多用空格空行
5,新的注释方式:{
    #if 0
        中间内容在进行编译时,不参与编译
    #endif
}

四、数据类型,运算符和表达式
对于基本数据类型{
   1、所占字节数:
      在标准c中,只规定以int类型作为一个基准,int类型占一个机器字长,char要小于int类型,float和double类型要大于int

   2、存储区别:
      C语言不识别二进制,在计算机中,整形数的存储是以补码形式存储,
      正数的源码补码反码都一样;
      负数的反码是其源码按位取反,负数补码是其源码按位取反再加一;
      实型数float的存储{
         在内存中开辟32位存储空间,最高位31位是符号位,次高位30到23位总的8位用于存储小数的整数部分,
         0到22位总的23位用于存储小数部分数据
      }

   二进制下:
      1,1,1,1=8,4,2,1
      2进制,
      8进制(2的3次方,在二进制下,将数字分为三个一组,然后转换为0到7之间的数字),
      16进制(2的4次方,在二进制下将数字转换为4位一组,然后转换为0到f之间的数)

   3、不同类型间数据转换:
      隐式转换---->自动类型提升
      显式转换---->强制类型转换

   4,特殊性:
      1)布尔型bool 假为0真为1
      2)float类型指的是一个大概的数一般float是否等于0常用(fabs(float f-0)<=1e-6)判断
      3)吃char型是否有符号
      4)不同形式的0值:0, '0',"0",'\0'
      5)数据类型与后续代码中所使用的输入输出要匹配(防止自相矛盾)
}


五、关于量:
   字符常量:
      由单引号引起来的单个字符或转义字符。

   字符串常量:
      由双引号引起来的一个或多个字符序列(如空串:"")

   标识常量:
      #define 宏名 宏体{
         宏体替换宏名,不检查语法,一般宏体建议加括号表示区分,宏还可以带参数,
         如(#define Max(a,b) a>b?a:b),宏使用比较危险
      }

      #define处理程序是在预处理阶段,占编译时间,特点一改全改,不检查语法,只是单纯的宏体与宏名替换

实栗子{
    i=5
    i=7
    i++>j++? i++:j++
}
//输出是???

以上是今日小结,不喜勿喷,感谢理解

相关链接:

【Linux学习(2)】----shell编程篇(2)_lixxkv的博客-CSDN博客

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值