【cs基础】C语言重点

程序结构

  • 预处理指令cpp
  • 函数
  • 变量
  • 语句&表达式
  • 注释

基本语法

  • token, C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。
  • 注释 /* 我的第一个 C 程序 */

数据类型

  • 算术类型

    • 整数型

      char(1 Byte) , unsigned char 
      int(4),   unsigned int
      short(2), unsigned short
      long(4),  unsigned long
      
    • 浮点型

      float(4), double(8), long double(16)
      
  • void
  • 派生类型
    • 指针
    • 数组
    • 结构体
    • 共用体
    • 函数

变量

没什么好说的

常量

  • #define 预处理器。
  • 使用 const 关键字。

存储类

  • auto 所有局部变量默认的存储类
{
   int mount;
   auto int month;
}
  • register 存储类用于定义存储在寄存器中,变量的最大尺寸等于寄存器的大小
{
   register int  miles;
}
  • static 存储类指示编译器在程序的生命周期内保持局部变量的存在,也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内

  • extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的; extern 是用来在另一个文件中声明一个全局变量或函数

运算符

判断

循环

函数

数组

    double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

指针

一个变量,其值为另一个变量的地址,即,内存位置的直接地址

字符串

strcpy(s1, s2);
strcat(s1, s2);
strlen(s1);
strcmp(s1, s2); 比较
strchr(s1, ch); ch 出现的index
strstr(s1, s2); s2 第一次出现的位置。

结构体

  • 存储不同类型的数据项,成员访问运算符(.)

    struct Books
    {
           char  title[50];
           char  author[50];
           char  subject[100];
           int   book_id;
    } book;  
    
  • 指向结构体的指针

    • 结构变量的地址

      struct_pointer = &Book1;
      
    • 访问结构体的成员 ,必须使用 -> 运算符

      void printBook( struct Books *book )
      {
         printf( "Book title : %s\n", book->title);
         printf( "Book author : %s\n", book->author);
         printf( "Book subject : %s\n", book->subject);
         printf( "Book book_id : %d\n", book->book_id);
      }
      
  • 位域

    把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数

    struct bs{
        int a:8;
        int b:2;
        int c:6;
    }data;
    

共用体

  • 允许您在相同的内存位置存储不同的数据类型,
  • 共用体占用的内存应足够存储共用体中最大的成员
  • 为了所有的成员都能完好输出,因为同一时间只用到一个成员

    union Data
    {
       int i;
       float f;
       char  str[20];
    } data; 
    

typedef

为类型取一个新的名字

typedef unsigned char BYTE;
标识符 BYTE 可作为类型 unsigned char 的缩写

输入输出

  • int scanf(const char *format, …) 函数

    用于从标准输入(键盘)读取并格式化
    
  • int printf(const char *format, …) 函数

    发送格式化输出到标准输出(屏幕)。
    
  • int getchar(void) 函数

    从屏幕读取下一个可用的字符,并把它返回为一个整数
    
  • int putchar(int c) 函数

    把字符输出到屏幕上,并返回相同的字符
    
  • char *gets(char *s) 函数

    从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF
    
  • int puts(const char *s) 函数

    把字符串 s 和一个尾随的换行符写入到 stdout。
    

文件读写

  • 打开文件

    fp = fopen("/tmp/test.txt", "w+");
    
  • 关闭文件

     fclose(fp);
    
  • 写入文件

    fputs("This is testing for fputs...\n", fp);
    fprintf(fp, "This is testing for fprintf...\n");
    
    也可以使用 int fprintf(FILE *fp,const char *format, ...) 函数来写把一个字符串写入到文件中
    
  • 读取文件

    fscanf(fp, "%s", buff);
    printf("1 : %s\n", buff );
    
    fgets(buff, 255, (FILE*)fp);
    printf("2: %s\n", buff );
    
  • 二进制

    size_t fread(void *ptr, size_t size_of_elements, 
                 size_t number_of_elements, FILE *a_file);
    
    size_t fwrite(const void *ptr, size_t size_of_elements, 
                 size_t number_of_elements, FILE *a_file);
    

预处理器

#define 定义宏
#include    包含一个源代码文件
#undef  取消已定义的宏
#ifdef  如果宏已经定义,则返回真
#ifndef 如果宏没有定义,则返回真
#if 如果给定条件为真,则编译下面代码
#else   #if 的替代方案
#elif   如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码
#endif  结束一个 #if……#else 条件编译块
#error  当遇到标准错误时,输出错误消息
#pragma 使用标准化方法,向编译器发布特殊的命令到编译器中

错误处理

errno、perror() 和 strerror()

可变参数

http://www.runoob.com/cprogramming/c-variable-arguments.html

内存管理

void *calloc(int num, int size);
该函数分配一个带有 num 个元素的数组,每个元素的大小为 size 字节。

void free(void *address); 
该函数释放 address 所指向的h内存块。

void *malloc(int num); 
该函数分配一个 num 字节的数组,并把它们进行初始化。

void *realloc(void *address, int newsize); 
该函数重新分配内存,把内存扩展到 newsize。

主要参考菜鸟教程:
http://www.runoob.com/cprogramming/c-data-types.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值