C 语言教程

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

1. C 语言基础

1.1 程序结构

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

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

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


#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 语言中,变量需要声明类型后才能使用。


#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 关键字定义常量。


#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 等条件语句,用于根据不同条件执行不同的代码块。


#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 数组

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


#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' 结束。


#include <stdio.h>

int main() {

char str[] = "Hello, World!";

printf("String: %s\n", str);

return 0;

}

php

115 Bytes

© 菜鸟-创作你的创作

4. 函数

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

4.1 函数定义与调用

#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 指针的声明与使用

#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 指针与数组

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


#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)用于将不同类型的数据组合在一起。


#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 语言提供了一组函数用于文件的读写操作。


#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 语言通过 malloccallocrealloc 和 free 来进行动态内存分配和管理。


#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 语言,并能够开发出各种高效的程序。

https://www.52runoob.com/archives/4126

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐