3 篇文章 最后更新:2025年6月6日
C语言基础语法

数据类型与变量

(1)变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。 (2)通过变量名,可以引用这块内存区域,获取里面存储的值。 (3)变量的构成包含三个要素:数据类型、变量名、存储的值。

变量必须先声明,后使用。可以先声明变量再赋值,也可以在声明变量的同时进行赋值。

void,表示"无类型", 主要用途:

  • 函数不返回任何值:void func()
  • 函数无参数:int func(void)
  • 通用指针:void*

整数类型

(1) 基本整数类型

类型 存储大小 (通常) 取值范围 (通常) 格式化符号
char 1字节 -128 到 127 或 0 到 255 %c
short 2字节 -32,768 到 32,767 %hd
int 4字节 -2,147,483,648 到 2,147,483,647 %d
long 4或8字节 取决于平台 %ld
long long 8字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 %lld

(2) 修饰符

  • signed:有符号数(默认)
  • unsigned:无符号数(范围从0开始)
  • short:缩短整数长度
  • long:扩展整数长度
c
unsigned char byte = 255;  // 0 到 255
signed short temperature = -30;
unsigned long population = 7800000000;

C99新增类型: 固定宽度整数类型

阅读更多 »
数组/函数/指针

数组(Arrays)

在C语言中,数组是一种用于存储相同类型数据的集合的数据结构。数组是程序设计中非常重要的工具,因为它可以高效地组织和操作大量数据。

声明与初始化

  • 一维数组(One-dimensional Arrays)的声明语法如下:

    c
    type array_name[size];
    • type:数组元素的类型(如 intfloatchar 等)。
    • array_name:数组的名称。
    • size:数组的大小,必须是一个正整数常量或宏。 示例:
    c
    int numbers[5];   // 声明一个包含5个整数的数组
    float values[10]; // 声明一个包含10个浮点数的数组
    
  • 初始化(Initialization):数组可以在声明时进行初始化,也可以在后续代码中赋值。

    • 静态初始化:
    c
    int arr[5] = {1, 2, 3, 4, 5}; // 初始化数组
    int arr2[] = {10, 20, 30};    // 编译器会自动推断数组大小为3
    
    • 动态赋值:
    c
    int arr[5];
    for (int i = 0; i < 5; i++) {
        arr[i] = i * 2;
    }

访问数组元素(Accessing Array Elements):数组元素通过索引访问,索引从0开始。

阅读更多 »
C语言高级特性

自定义数据类型

C 语言允许用户根据需要定义自己的数据类型,以更好地组织和表示数据。常见的自定义数据类型包括枚举、结构体、共用体,以及使用 typedef 创建类型别名。

枚举类型 (enum)

枚举类型用于定义一组命名的整数常量,使代码更具可读性。

基本语法

c
enum Color { RED, GREEN, BLUE }; // 默认从 0 开始赋值,RED=0, GREEN=1, BLUE=2

enum Status { OK = 0, WARNING = 1, ERROR = 2 }; // 显式赋值

使用示例

c
#include <stdio.h>

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };

int main() {
    enum Day today = WEDNESDAY;

    if (today == WEDNESDAY) {
        printf("Today is Wednesday.\n"); // 输出:Today is Wednesday.
    }

    printf("Value of FRIDAY: %d\n", FRIDAY); // 输出:Value of FRIDAY: 4
    return 0;
}

与 C++ 的区别: C++11 引入了作用域枚举 (enum class),解决了传统 C 语言枚举的一些问题(如命名冲突、隐式转换为整数)。C 语言的枚举常量属于全局作用域(或定义它们的作用域),并且可以隐式转换为 int

阅读更多 »