c语言基础知识学习

1. C 语言简介

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

1. 基本语法

  • 程序结构:

    • C 语言程序由函数组成,main 函数是程序的入口点。
    c 复制代码
    #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 字节。
    c 复制代码
    int a = 10;
    float b = 3.14;
    double c = 2.718281828;
    char d = 'A';
  • 修饰符

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

3. 变量

  • 声明与初始化:

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

4. 运算符

  • 算术运算符

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

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

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

    • =、+=、-=、*=、/=,用于赋值操作。
    c 复制代码
    a += 5; // a = a + 5

5. 控制结构

  • 条件语句

    • if、else if、else 用于条件判断。
    c 复制代码
    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 循环:

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

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

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

6. 函数

  • 函数定义与调用

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

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

7. 数组

  • 定义与初始化

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

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

8. 字符串

  • 定义与操作

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

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

9. 指针

  • 定义与使用

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

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

10. 结构体

  • 定义与使用:

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

11. 文件操作

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

    • 使用 fopen、fprintf、fscanf、fclose 操作文件。
    c 复制代码
    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 管理内存。
    c 复制代码
    int *arr = (int *)malloc(sizeof(int) * 10);
    // 使用 arr
    free(arr);

13. 预处理器指令

  • 宏定义

    • 用 #define 定义常量或宏。
    c 复制代码
    #define PI 3.14159
  • 条件编译

    • 使用 #ifdef、#ifndef、#endif 进行条件编译。
    c 复制代码
    #ifdef DEBUG
    printf("Debug mode\n");
    #endif
相关推荐
疯一样的码农3 分钟前
Python 正则表达式(RegEx)
开发语言·python·正则表达式
&岁月不待人&25 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
StayInLove29 分钟前
G1垃圾回收器日志详解
java·开发语言
TeYiToKu30 分钟前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
无尽的大道36 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
互联网打工人no137 分钟前
每日一题——第一百二十四题
c语言
爱吃生蚝的于勒40 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~44 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
binishuaio1 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE1 小时前
【Java SE】StringBuffer
java·开发语言