C 语言教程

C 语言教程

C 语言是一种通用的程序设计语言,由 Dennis Ritchie 在 1972 年开发。它是结构化编程的代表语言之一,拥有广泛的应用领域,特别是在操作系统、寫寪審网络编程、嵌入式系统等方面。C 语言的语法简洁,性能强劲,是许多高级语言(如 C++、Python、Java)的基础。

1. C 语言基础

1.1 程序结构

C 语言的程序通常包括以下部分:

  • 头文件:包含必要的库和定义。
  • main() 函数:程序的入口点。
  • 函数:用于组织代码和实现功能。
  • 变量和数据类型:存储程序运行时使用的数据。

一个最简单的 C 语言程序:

arduino 复制代码
#include <stdio.h>  // 引入标准输入输出库
int main() {
    printf("Hello, World!\n");  // 打印输出
    return 0;  // 程序结束
}
php
111 Bytes
© 菜鸟-创作你的创作

1.2 数据类型

C 语言支持多种数据类型,用于存储不同类型的数据。基本数据类型有:

  • 整数类型

    • int:通常占 4 字节,用于存储整数。
    • short:通常占 2 字节,存储较小范围的整数。
    • long:通常占 8 字节,用于存储较大范围的整数。
    • long long:通常占 8 字节,存储更大范围的整数。
  • 浮点类型

    • float:占 4 字节,存储单精度浮点数。
    • double:占 8 字节,存储双精度浮点数。
  • 字符类型

    • char:占 1 字节,用于存储字符。
  • 布尔类型

    C 标准库没有内建的布尔类型,但可以用 int 来模拟布尔类型(0 表示 false,非零值表示 true)。

1.3 变量声明与初始化

在 C 语言中,变量需要声明类型后才能使用。

arduino 复制代码
#include <stdio.h>
int main() {
    int a = 10;  // 整型变量 a
    float b = 3.14;  // 浮点型变量 b
    char c = 'A';  // 字符型变量 c
    
    printf("a = %d, b = %f, c = %c\n", a, b, c);
    return 0;
}
php
191 Bytes
© 菜鸟-创作你的创作

1.4 常量

常量在程序运行时不可修改,通常用 #define 定义宏常量,或者使用 const 关键字定义常量。

arduino 复制代码
#include <stdio.h>
#define PI 3.14159  // 使用 #define 定义常量
int main() {
    const int max_value = 100;  // 使用 const 定义常量
    
    printf("PI = %f, max_value = %d\n", PI, max_value);
    return 0;
}
php
198 Bytes
© 菜鸟-创作你的创作

2. 控制结构

2.1 条件语句

C 语言支持 ifelse ifelse 等条件语句,用于根据不同条件执行不同的代码块。

arduino 复制代码
#include <stdio.h>
int main() {
    int a = 10;
    if (a > 0) {
        printf("a is positive\n");
    } else if (a == 0) {
        printf("a is zero\n");
    } else {
        printf("a is negative\n");
    }
    return 0;
}
php
226 Bytes
© 菜鸟-创作你的创作

2.2 循环语句

C 语言有三种常见的循环结构:for 循环、while 循环、do-while 循环。

  • for 循环 :适用于已知循环次数的情况。for (int i = 0; i < 5; i++) { printf("i = %d\n", i); }
  • while 循环 :适用于不确定循环次数的情况。int i = 0; while (i < 5) { printf("i = %d\n", i); i++; }
  • do-while 循环 :至少执行一次循环体。int i = 0; do { printf("i = %d\n", i); i++; } while (i < 5);

3. 数组和字符串

3.1 数组

数组是存储相同类型元素的集合。数组的大小在声明时必须指定。

arduino 复制代码
#include <stdio.h>
int main() {
    int arr[5] = {1, 2, 3, 4, 5};  // 声明并初始化数组
    for (int i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    return 0;
}
php
180 Bytes
© 菜鸟-创作你的创作

3.2 字符串

在 C 语言中,字符串是一个字符数组,以空字符 '\0' 结束。

arduino 复制代码
#include <stdio.h>
int main() {
    char str[] = "Hello, World!";
    printf("String: %s\n", str);
    return 0;
}
php
115 Bytes
© 菜鸟-创作你的创作

4. 函数

函数是 C 语言的基本组织单元,可以将一段代码封装成一个独立的模块。

4.1 函数定义与调用

arduino 复制代码
#include <stdio.h>
// 函数声明
int add(int, int);
int main() {
    int result = add(5, 10);
    printf("The sum is: %d\n", result);
    return 0;
}
// 函数定义
int add(int a, int b) {
    return a + b;
}
php
198 Bytes
© 菜鸟-创作你的创作

5. 指针

指针是 C 语言中的核心概念之一,用于存储内存地址。通过指针,程序可以间接访问和修改数据。

5.1 指针的声明与使用

arduino 复制代码
#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;  // p 是指针,指向 a 的地址
    printf("Address of a: %p\n", p);  // 输出 a 的地址
    printf("Value of a: %d\n", *p);  // 输出 a 的值
    return 0;
}
php
199 Bytes
© 菜鸟-创作你的创作

5.2 指针与数组

指针可以用来访问数组元素。

arduino 复制代码
#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *p = arr;  // 数组名表示数组首元素的地址
    printf("First element: %d\n", *p);  // 输出数组第一个元素
    return 0;
}
php
166 Bytes
© 菜鸟-创作你的创作

6. 结构体

结构体(struct)用于将不同类型的数据组合在一起。

arduino 复制代码
#include <stdio.h>
struct Person {
    char name[50];
    int age;
};
int main() {
    struct Person p1 = {"Alice", 30};
    printf("Name: %s, Age: %d\n", p1.name, p1.age);
    return 0;
}
php
190 Bytes
© 菜鸟-创作你的创作

7. 文件操作

C 语言提供了一组函数用于文件的读写操作。

arduino 复制代码
#include <stdio.h>
int main() {
    FILE *file = fopen("example.txt", "w");  // 打开文件进行写操作
    if (file != NULL) {
        fprintf(file, "Hello, File!\n");  // 向文件写入内容
        fclose(file);  // 关闭文件
    }
    return 0;
}
php
220 Bytes
© 菜鸟-创作你的创作

8. 动态内存分配

C 语言通过 malloccallocreallocfree 来进行动态内存分配和管理。

c 复制代码
#include <stdio.h>
#include <stdlib.h>
int main() {
    int *arr = (int *)malloc(5 * sizeof(int));  // 动态分配内存
    if (arr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        arr[i] = i * 2;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    free(arr);  // 释放内存
    return 0;
}
php
381 Bytes
© 菜鸟-创作你的创作

总结

C 语言是一种强大的编程语言,能够提供对硬件的细粒度控制和高效的性能。尽管 C 语言的语法较为简洁,但它要求程序员对内存管理和指针等底层概念有

深入理解。通过不断练习和编写程序,你将能够掌握 C 语言,并能够开发出各种高效的程序。 www.52runoob.com/archives/41...

相关推荐
wjpwjpwjp08313 分钟前
[MySQL基础3] 数据控制语言DCL和MySQL中的常用函数
数据库·笔记·后端·学习·mysql
东边有耳6 分钟前
一文深扒银行会计科目(收藏备查)
后端·架构·产品经理
鱼樱前端7 分钟前
一文讲解时下比较火的Rust语言之-rust开发环境搭建
前端·javascript
东边有耳11 分钟前
银行将你的存款放大了!!!
后端
白日依山尽yy21 分钟前
SpringBoot项目部署至云服务器
java·spring boot·后端
Moment1 小时前
Next.js 15.4 正式发布:Turbopack 全面稳定,预热 Next.js 16 😍😍😍
前端·javascript·node.js
虚!!!看代码1 小时前
uni-app 跳转页面传参
前端·vue.js·uni-app
脑袋大大的1 小时前
UniApp 自定义导航栏:解决安全区域适配问题的完整实践
前端·javascript·安全·uni-app·uniapp·app开发·uniappx
这辈子谁会真的心疼你1 小时前
pdf格式怎么提取其中一部分张页?
前端·pdf
汤姆yu1 小时前
基于springboot的考研互助小程序
java·spring boot·后端·考研互助