Unbutu下 c语言高级编程

Linux下 c语言编程(下)


前言

学习物联网技术第二天


一、GCC是什么?

GCC(GNU C Compiler)原名GNU C语言编译器,是由GNU开发的编程语言译器,只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。GCC 编译器是 Linux 系统下最常用的 C/C++ 编译器,大部分 Linux 发行版中都会默认安装。GCC 编译器通常以gcc命令的形式在终端(Shell)中使用.

Gcc历史版本
https://gcc.gnu.org/

gcc识别的文件扩展名如下:
.c C 语言文件
.i 预处理后的 C 语言文件
.C、.cc、.cp、.cpp、.c++、.cxx C++语言文件
.ii 预处理后的 C++ 语言文件
.S 汇编文件(用户自己新建的汇编文件)
.s 预处理后的汇编文件
.o 编译后的目标文件
.a 目标文件的静态链接库(链接时使用)
.so 目标文件的动态链接库(链接、运行时使用)

编译器的主要组件
在这里插入图片描述
编译流程如下:
在这里插入图片描述
预编译文件: *.i
gcc -E test.c -o test.i
汇编文件: *.s
gcc -S test.i -o test.s
目标文件: *.o
gcc -c test.s -o test.o
可执行文件 *.exe
gcc test.o -o test

二、GCC基本用法

1.基本用法

在这里插入图片描述

2.实战

代码如下(示例):

#include <stdio.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
          char ch;
          while((ch = getchar())!=EOF){
                  if(isalpha(ch)){
                          printf("ch is char\n");
                          break;
                  }
         }
  
          return 0;
  
  
  }

在这里插入图片描述

在这里插入图片描述

三、了解Gdb调式器

1.Gdb调式流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
进入函数:(gdb): s
全部执行完: (gdb):c
退出: (gdb):q

四、C语言结构体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、C语言共用体

在这里插入图片描述

输入
size = 4;
0x12345678
0x78

五、C语言内存管理

1、C/C++定义了4个内存区间

在这里插入图片描述
请添加图片描述

2、静态存储分配

通常定义变量,编译器在编译时都可以根据该变量的类型知道所需内存空间的大小,从而系统在适应
的时候为他们分配确定的存储空间。
在栈上创建。在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元
自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

3、动态存储分配

1、有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法他们预定存储空间,只能在程序运行时,
系统根据运行的要求进行分配,这种方法称为动态存储分配
2、所有动态存储分配都在堆区进行
3、从堆上分配,称为动态内存分配。程序在运行的时候用malloc申请任何内存,程序员自己负责在何时用free释放
内存。动态内存的生存期由程序员决定,使用起来非常灵活,但遇到的问题也很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值