FFmpeg音视频(二),C语言基本语法

基本语法

  • 基本类型:short,int

  • 指针:就是内存地址 :void ,char

  • 数组:连续的存储空间

  • 自定义类型:结构体

struct st
{
      int a;
      int b;
};

sst.a = 10 ;
  • 枚举:
enum e_type
{
  red=10,
  green=20,
  black=30
}; 
  • 算数运算
类似java中的+-*/ %
  • if for 类似java
for (size_t a = 0; a < 50; a+=2)
    {
        printf("a=%d\n",a);
    }

  • while
while (1)
    {
        printf("");
    }
  • 函数
#include <stdio.h>
int sum(int a,int b){
    return(a+b);
}
int main (int argc,char*argv[]){
   int result ;
   result = (sum(3,5)) ;
   printf("resutlt=%d",result);
   return 0;
}

  • 文件
    FILE* file;
    char buf[1024] = {0,};

    file = fopen("1.txt","a+");
    fwrite("hello world!",1,13,file);

    rewind(file);
    fread(buf,1,26,file);
    fclose(file);


  • 指针本身运算,指针所指内容操作
  1. 栈空间所函数创建和释放,默认4M
  2. 堆空间
  3. 内存映射(一般用于数据库)

内存分配
void* mem = malloc(size);//一般在堆空间
释放内存(不释放的话,会泄露或者产生野指针)
free(mem);
函数指针:既函数的地址

int (*f)(int ,int );

编译

编译器:GCC/CLANG

  1. 命令
gcc/clang -g -O2 -o test.c -I... _L... _I
-g:输出调试信息
-O:对输出文件做指令优化
-o:输出文件
-I:指定头文件
—L:指定库文件位置
-l:指定使用哪个库

2.编译过程静态库并外部引入

  • 预编译(将头文件和源代码放在一起,copy)
  • 编译
  • 链接,动态链接/静态链接(.O与其他库链接)
$  clang -g -c add.c  
$  libtool -static -o libmylib.a add.o
$  ls -lat libmylib.a
$  clang -g -o testlib  test.c -I . -L . -lmylib
$  ./testlib

部分源码

如有疏漏,请指出不胜感激,如有问题可以通过如下方式联系我

简书
csdn
掘金
klvens跑码场

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,542评论 1 51
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,478评论 0 49
  • 几种语言的特性 汇编程序:将汇编语言源程序翻译成目标程序编译程序:将高级语言源程序翻译成目标程序解释程序:将高级语...
    囊萤映雪的萤阅读 2,960评论 1 5
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,052评论 0 14