当前位置: 首页 > news >正文

c语言基础知识学习

1. C 语言简介

  • 定义:C 语言是一种过程式编程语言,设计用于系统编程和应用程序开发。
  • 特点:高效、灵活、接近硬件,支持指针和内存操作。

1. 基本语法

  • 程序结构:

    • C 语言程序由函数组成,main 函数是程序的入口点。
    #include <stdio.h>int main() {printf("Hello, World!\n");return 0;
    }
    
    • #include <stdio.h> 是预处理指令,包含标准输入输出库。
    • int main() 是主函数,程序从这里开始执行。
    • printf 用于输出文本到终端。

2. 数据类型

  • 基本数据类型

    • int:整数类型,通常占用 4 字节。
    • float:单精度浮点数,通常占用 4 字节。
    • double:双精度浮点数,通常占用 8 字节。
    • char:字符类型,通常占用 1 字节。
    int a = 10;
    float b = 3.14;
    double c = 2.718281828;
    char d = 'A';
    
  • 修饰符

    • short、long、signed、unsigned 用于修饰基本数据类型的大小和符号。
    unsigned int x = 1000;
    long int y = 100000L;
    

3. 变量

  • 声明与初始化:

    • 变量必须在使用之前声明,并可以在声明时初始化。
    int a = 5;    // 声明并初始化变量 a
    int b;        // 声明变量 b
    b = 10;       // 初始化变量 b
    

4. 运算符

  • 算术运算符

    • +、-、*、/、%,用于基本的数学运算。
    int sum = a + b;
    int product = a * b;
    
  • 关系运算符

    • ==、!=、>、<、>=、<=,用于比较操作。
    if (a > b) {printf("a is greater than b\n");
    }
    
  • 逻辑运算符

    • &&(与)、||(或)、!(非),用于逻辑运算。
    if (a > 0 && b > 0) {printf("Both a and b are positive\n");
    }
    
  • 赋值运算符

    • =、+=、-=、*=、/=,用于赋值操作。
    a += 5; // a = a + 5
    

5. 控制结构

  • 条件语句

    • if、else if、else 用于条件判断。
    if (a > b) {printf("a is greater\n");
    } else if (a < b) {printf("a is smaller\n");
    } else {printf("a and b are equal\n");
    }
    
  • 循环语句

    • for 循环:

      for (int i = 0; i < 5; i++) {printf("%d\n", i);
      }
      
    • while 循环:

      int i = 0;
      while (i < 5) {printf("%d\n", i);i++;
      }
      
    • do-while 循环:

      int i = 0;
      do {printf("%d\n", i);i++;
      } while (i < 5);
      

6. 函数

  • 函数定义与调用

    • 函数用于组织代码,执行特定任务。
    int add(int x, int y) {return x + y;
    }int main() {int result = add(5, 3);printf("Result: %d\n", result);return 0;
    }
    
  • 函数原型

    • 在函数定义之前声明函数,以告知编译器函数的存在。
    int add(int, int);
    

7. 数组

  • 定义与初始化

    • 数组是相同数据类型元素的集合。
    int arr[5] = {1, 2, 3, 4, 5};
    
  • 访问元素

    • 使用索引访问数组元素,索引从 0 开始。
    int first = arr[0]; // 访问第一个元素
    

8. 字符串

  • 定义与操作

    • 字符串是以 null 结尾的字符数组。
    char str[] = "Hello";
    printf("%s\n", str);
    
  • 字符串函数

    • 使用 strlen、strcpy、strcat 和 strcmp 等库函数操作字符串。
    #include <string.h>
    char dest[50];
    strcpy(dest, "Hello");
    strcat(dest, " World");
    

9. 指针

  • 定义与使用

    • 指针存储变量的内存地址。
    int a = 10;
    int *p = &a; // p 指向变量 a 的地址
    
  • 解引用与指针运算

    • 使用 * 操作符访问指针指向的值。
    *p = 20; // 修改 a 的值为 20
    

10. 结构体

  • 定义与使用:

    • 结构体用于定义具有不同数据类型的集合。
    struct Person {char name[50];int age;
    };struct Person p1;
    strcpy(p1.name, "Alice");
    p1.age = 30;
    

11. 文件操作

  • 打开、读写和关闭文件:

    • 使用 fopen、fprintf、fscanf、fclose 操作文件。
    FILE *fp = fopen("file.txt", "w");
    fprintf(fp, "Hello, File!\n");
    fclose(fp);FILE *fp = fopen("file.txt", "r");
    char buffer[100];
    fgets(buffer, 100, fp);
    fclose(fp);
    

12. 动态内存管理

  • 分配和释放内存:

    • 使用 malloc、calloc、realloc 和 free 管理内存。
    int *arr = (int *)malloc(sizeof(int) * 10);
    // 使用 arr
    free(arr);
    

13. 预处理器指令

  • 宏定义

    • 用 #define 定义常量或宏。
    #define PI 3.14159
    
  • 条件编译

    • 使用 #ifdef、#ifndef、#endif 进行条件编译。
    #ifdef DEBUG
    printf("Debug mode\n");
    #endif
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 井字棋游戏(HTML+CSS+JavaScript)
  • Java的反射原理
  • 天途推出无人机软硬件定制服务
  • Velero 快速上手:使用 Velero 实现 Kubernetes 集群备份与迁移
  • Java设计模式-责任链模式
  • 酷炫时尚未来科技视频开头PR模板MOGRT
  • zabbix的setup无法进入第二步
  • 单细胞irGSEA分析:整合多种富集分析方式的R包
  • 数据中台之数据开发-离线开发和实时开发
  • 超级外链工具,可发9600条优质外链
  • Linux--传输层协议UDP
  • 排序算法之堆排序
  • 前端案例:极速问诊项目(移动端自适应)(HTML+CSS+JS)
  • 使用Form表单进行数据提交的最佳实践与安全措施
  • 【HNOI2003】操作系统Java
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • Bytom交易说明(账户管理模式)
  • create-react-app项目添加less配置
  • ECMAScript6(0):ES6简明参考手册
  • Median of Two Sorted Arrays
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • WebSocket使用
  • XForms - 更强大的Form
  • 回流、重绘及其优化
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • ​TypeScript都不会用,也敢说会前端?
  • #数据结构 笔记一
  • $ git push -u origin master 推送到远程库出错
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • %@ page import=%的用法
  • (39)STM32——FLASH闪存
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • .gitignore
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET开源项目介绍及资源推荐:数据持久层
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @angular/cli项目构建--http(2)
  • @ConditionalOnProperty注解使用说明
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [22]. 括号生成
  • [android] 请求码和结果码的作用
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [C语言]——C语言常见概念(1)
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [hihocoder1395] 最大权闭合子图
  • [HTTP]HTTP协议的状态码