爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      《深入浅出C语言:从基础到指针的全面指南》

      首页 知识中心 软件开发 文章详情页

      《深入浅出C语言:从基础到指针的全面指南》

      2024-11-07 08:17:34 阅读次数:30

      指针,数组,运算符

      1. 简介

              C语言是一种通用的编程语言,广泛应用于系统编程、嵌入式系统和高性能应用程序。它由Dennis Ritchie在1972年开发,并且至今仍然非常流行。C语言以其高效、灵活和强大的功能著称,是许多现代编程语言的基础。

      2. 基本语法

      2.1 Hello, World!程序
      #include <stdio.h>
      
      int main() {
          printf("Hello, World!\n");
          return 0;
      }
      
      • #include <stdio.h>:包含标准输入输出库。
      • int main():程序的主函数。
      • printf:输出函数,用于打印字符串。
      • return 0:返回0表示程序成功结束。
      2.2 注释

              C语言支持单行注释和多行注释:

      // 这是单行注释
      /*
        这是多行注释
      */
      

      3. 数据类型和变量

      3.1 基本数据类型

              C语言有以下几种基本数据类型:

      • 整型(int)
      • 浮点型(float, double)
      • 字符型(char)
      int a = 10;
      float b = 5.5;
      char c = 'A';
      
      3.2 变量声明和初始化

              变量声明和初始化可以在同一行完成:

      int x = 5;
      float y = 3.14;
      char z = 'A';
      
      3.3 常量

              使用const关键字定义常量:

      const int MAX = 100;
      
      数据类型 描述
      int 整型
      float 浮点型
      double 双精度浮点型
      char 字符型
      const 常量

      4. 运算符

      4.1 算术运算符

              C语言支持以下算术运算符:

      • +:加法
      • -:减法
      • *:乘法
      • /:除法
      • %:取模
      int a = 10, b = 3;
      int sum = a + b;  // sum = 13
      int diff = a - b; // diff = 7
      int prod = a * b; // prod = 30
      int quot = a / b; // quot = 3
      int mod = a % b;  // mod = 1
      
      4.2 关系运算符

              关系运算符用于比较两个值:

      • ==:等于
      • !=:不等于
      • >:大于
      • <:小于
      • >=:大于等于
      • <=:小于等于
      int x = 5, y = 10;
      int result = (x == y); // result = 0 (false)
      result = (x != y);     // result = 1 (true)
      result = (x > y);      // result = 0 (false)
      result = (x < y);      // result = 1 (true)
      
      4.3 逻辑运算符

              逻辑运算符用于组合多个条件:

      • &&:逻辑与
      • ||:逻辑或
      • !:逻辑非
      int a = 1, b = 0;
      int result = (a && b); // result = 0 (false)
      result = (a || b);     // result = 1 (true)
      result = !a;           // result = 0 (false)
      
      4.4 赋值运算符

              赋值运算符用于给变量赋值:

      • =:赋值
      • +=:加后赋值
      • -=:减后赋值
      • *=:乘后赋值
      • /=:除后赋值
      • %=:模后赋值
      int a = 10;
      a += 5;  // a = 15
      a -= 3;  // a = 12
      a *= 2;  // a = 24
      a /= 4;  // a = 6
      a %= 4;  // a = 2
      
      4.5 位运算符

              位运算符用于操作二进制位:

      • &:按位与
      • |:按位或
      • ^:按位异或
      • ~:按位取反
      • <<:左移
      • >>:右移
      int a = 5, b = 3; // a = 0101, b = 0011
      int result = a & b; // result = 0001 (1)
      result = a | b;     // result = 0111 (7)
      result = a ^ b;     // result = 0110 (6)
      result = ~a;        // result = 11111111111111111111111111111010 (-6)
      result = a << 1;    // result = 1010 (10)
      result = a >> 1;    // result = 0010 (2)
      
      4.6 其他运算符
      • ? ::三元运算符
      int a = 10, b = 20;
      int max = (a > b) ? a : b; // max = 20
      
      运算符 描述
      +, -, *, /, % 算术运算符
      ==, !=, >, <, >=, <= 关系运算符
      &&,  
      =, +=, -=, *=, /=, %= 赋值运算符
      &, , ^, ~, <<, >>
      ? : 三元运算符
      4.7 综合示例
      #include <stdio.h>
      
      int main() {
          int a = 10, b = 20;
          int sum = a + b;
          int diff = a - b;
          int prod = a * b;
          int quot = a / b;
          int mod = a % b;
      
          if (a > b) {
              printf("a is greater than b\n");
          } else {
              printf("a is not greater than b\n");
          }
      
          int max = (a > b) ? a : b;
          printf("The maximum value is: %d\n", max);
      
          return 0;
      }
      

      5. 控制结构

      5.1 条件语句
      5.1.1 if语句
      int x = 5;
      if (x > 0) {
          printf("x is positive\n");
      }
      
      5.1.2 if-else语句
      int x = -5;
      if (x > 0) {
          printf("x is positive\n");
      } else {
          printf("x is non-positive\n");
      }
      
      5.1.3 switch语句
      int day = 3;
      switch (day) {
          case 1:
              printf("Monday\n");
              break;
          case 2:
              printf("Tuesday\n");
              break;
          case 3:
              printf("Wednesday\n");
              break;
          default:
              printf("Invalid day\n");
      }
      5.2 循环语句

              循环语句允许重复执行某段代码,直到满足特定条件。C语言支持三种主要的循环语句:for循环、while循环和do-while循环。

      5.2.1 for循环

         for循环通常用于需要明确知道循环次数的场景。

      for (int i = 0; i < 5; i++) {
          printf("i = %d\n", i);
      }
      
      • 初始化:int i = 0,在循环开始前执行。
      • 条件:i < 5,在每次循环前检查,如果条件为真,则执行循环体。
      • 迭代:i++,在每次循环结束后执行。
      5.2.2 while循环

         while循环在每次迭代前检查条件,如果条件为真,则执行循环体。

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

         do-while循环先执行循环体,然后再检查条件。如果条件为真,则继续循环。

      int i = 0;
      do {
          printf("i = %d\n", i);
          i++;
      } while (i < 5);
      
      循环类型 描述
      for 适用于已知循环次数的情况
      while 适用于循环次数不确定,但需要在每次迭代前检查条件的情况
      do-while 适用于至少需要执行一次循环体的情况
      5.3 跳转语句

              跳转语句用于改变程序的执行流程。C语言支持以下跳转语句:break、continue和goto。

      5.3.1 break

         break语句用于立即退出循环或switch语句。

      for (int i = 0; i < 10; i++) {
          if (i == 5) {
              break;
          }
          printf("i = %d\n", i);
      }
      
      5.3.2 continue

         continue语句用于跳过当前迭代,继续下一次循环。

      for (int i = 0; i < 10; i++) {
          if (i == 5) {
              continue;
          }
          printf("i = %d\n", i);
      }
      
      5.3.3 goto

         goto语句用于无条件跳转到程序中的指定标签。应谨慎使用goto,因为它可能导致代码难以理解和维护。

      int i = 0;
      start:
      printf("i = %d\n", i);
      i++;
      if (i < 5) {
          goto start;
      }
      
      跳转语句 描述
      break 立即退出循环或switch语句
      continue 跳过当前迭代,继续下一次循环
      goto 无条件跳转到指定标签
      5.4 综合示例
      #include <stdio.h>
      
      int main() {
          // for 循环示例
          for (int i = 0; i < 5; i++) {
              printf("for loop: i = %d\n", i);
          }
      
          // while 循环示例
          int j = 0;
          while (j < 5) {
              printf("while loop: j = %d\n", j);
              j++;
          }
      
          // do-while 循环示例
          int k = 0;
          do {
              printf("do-while loop: k = %d\n", k);
              k++;
          } while (k < 5);
      
          // break 和 continue 示例
          for (int l = 0; l < 10; l++) {
              if (l == 5) {
                  break; // 退出循环
              }
              if (l % 2 == 0) {
                  continue; // 跳过当前迭代
              }
              printf("break and continue: l = %d\n", l);
          }
      
          return 0;
      }
      

      6. 函数

              函数是组织代码的一种方式,能够提高代码的重用性和可读性。C语言中的函数包括函数定义和函数声明。

      6.1 函数的定义和声明

              函数定义包括函数的返回类型、函数名、参数列表和函数体。函数声明则是在函数使用前声明其类型和参数。

      // 函数声明
      int add(int x, int y);
      
      // 函数定义
      int add(int x, int y) {
          return x + y;
      }
      
      int main() {
          int result = add(3, 4);
          printf("Result: %d\n", result);
          return 0;
      }
      
      6.2 函数参数和返回值

              函数可以接受参数并返回值。参数在函数定义时指定,调用时传递。

      int multiply(int a, int b) {
          return a * b;
      }
      
      int main() {
          int result = multiply(5, 6);
          printf("Result: %d\n", result);
          return 0;
      }
      
      6.3 递归函数

              递归函数是指一个函数在其定义中调用自身。递归需要一个终止条件,否则会导致无限递归。

      int factorial(int n) {
          if (n == 0) {
              return 1;
          }
          return n * factorial(n - 1);
      }
      
      int main() {
          int result = factorial(5);
          printf("Factorial: %d\n", result);
          return 0;
      }
      
      6.4 函数指针

              函数指针是指向函数的指针,可以用来调用函数。

      #include <stdio.h>
      
      int add(int a, int b) {
          return a + b;
      }
      
      int main() {
          int (*func_ptr)(int, int) = add;
          int result = func_ptr(3, 4);
          printf("Result: %d\n", result);
          return 0;
      }
      
      函数类型 描述
      普通函数 定义和声明函数,接受参数并返回值
      递归函数 在函数定义中调用自身
      函数指针 指向函数的指针,用于调用函数
      6.5 综合示例
      #include <stdio.h>
      
      // 函数声明
      int add(int x, int y);
      int multiply(int a, int b);
      int factorial(int n);
      
      // 函数定义
      int add(int x, int y) {
          return x + y;
      }
      
      int multiply(int a, int b) {
          return a * b;
      }
      
      int factorial(int n) {
          if (n == 0) {
              return 1;
          }
          return n * factorial(n - 1);
      }
      
      int main() {
          int sum = add(3, 4);
          int product = multiply(5, 6);
          int fact = factorial(5);
      
          printf("Sum: %d\n", sum);
          printf("Product: %d\n", product);
          printf("Factorial: %d\n", fact);
      
          // 函数指针
          int (*func_ptr)(int, int) = add;
          int result = func_ptr(7, 8);
          printf("Function pointer result: %d\n", result);
      
          return 0;
      }

      7. 数组

              数组是存储相同类型数据的集合。C语言支持一维数组和多维数组。

      7.1 一维数组

              一维数组是最简单的数组形式,用于存储一组相同类型的数据。

      int arr[5] = {1, 2, 3, 4, 5};
      for (int i = 0; i < 5; i++) {
          printf("arr[%d] = %d\n", i, arr[i]);
      }
      
      7.2 多维数组

              多维数组是数组的数组,可以用于存储更复杂的数据结构。

      int matrix[2][3] = {
          {1, 2, 3},
          {4, 5, 6}
      };
      
      for (int i = 0; i < 2; i++) {
          for (int j = 0; j < 3; j++) {
              printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
          }
      }
      
      7.3 字符串(字符数组)

              字符串在C语言中表示为字符数组,以空字符\0结尾。

      char str[] = "Hello, World!";
      printf("%s\n", str);
      
      7.4 数组与指针的关系

              数组名实际上是一个指向数组首元素的指针。

      int arr[5] = {1, 2, 3, 4, 5};
      int *p = arr;  // 数组名即为数组首元素的地址
      for (int i = 0; i < 5; i++) {
          printf("arr[%d] = %d, *(p + %d) = %d\n", i, arr[i], i, *(p + i));
      }
      
      数组类型 描述
      一维数组 存储一组相同类型的数据
      多维数组 数组的数组,用于存储更复杂的数据结构
      字符串 字符数组,以空字符\0结尾
      数组与指针 数组名是指向数组首元素的指针
      7.5 综合示例
      #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]);
          }
      
          // 多维数组示例
          int matrix[2][3] = {
              {1, 2, 3},
              {4, 5, 6}
          };
          for (int i = 0; i < 2; i++) {
              for (int j = 0; j < 3; j++) {
                  printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
              }
          }
      
          // 字符串示例
          char str[] = "Hello, World!";
          printf("%s\n", str);
      
          // 数组与指针的关系示例
          int *p = arr;  // 数组名即为数组首元素的地址
          for (int i = 0; i < 5; i++) {
              printf("arr[%d] = %d, *(p + %d) = %d\n", i, arr[i], i, *(p + i));
          }
      
          return 0;
      }
      

      8. 指针

              指针是C语言中非常重要的概念,用于存储变量的地址。指针的灵活性和强大功能使其在C语言编程中广泛应用。

      8.1 指针的基本概念

              指针是一个变量,其值为另一个变量的地址。

      int a = 10;
      int *p = &a;  // p是一个指针,存储了变量a的地址
      printf("a = %d, *p = %d\n", a, *p);  // *p表示指针p指向的变量的值
      
      8.2 指针的声明和初始化

              指针的声明和初始化如下:

      int a = 10;
      int *p = &a;  // 声明一个指向int类型的指针,并初始化为变量a的地址
      
      8.3 指针运算

              指针可以进行加减运算和比较运算。

      • 指针加减运算
      int arr[5] = {1, 2, 3, 4, 5};
      int *p = arr;
      p = p + 2;  // 指针指向第三个元素
      printf("*p = %d\n", *p);  // 输出3
      
      • 指针比较运算
      int *p1 = arr;
      int *p2 = arr + 2;
      if (p1 < p2) {
          printf("p1 points to an earlier element than p2\n");
      }
      
      8.4 指针与数组

      指针和数组有着密切的关系,数组名实际上是一个指向数组首元素的指针。

      int arr[5] = {1, 2, 3, 4, 5};
      int *p = arr;  // 数组名即为数组首元素的地址
      for (int i = 0; i < 5; i++) {
          printf("arr[%d] = %d, *(p + %d) = %d\n", i, arr[i], i, *(p + i));
      }
      
      8.5 函数中的指针参数

      指针可以作为函数参数传递,允许函数修改调用者的变量。

      void swap(int *a, int *b) {
          int temp = *a;
          *a = *b;
          *b = temp;
      }
      
      int main() {
          int x = 10, y = 20;
          swap(&x, &y);
          printf("x = %d, y = %d\n", x, y);  // 输出x = 20, y = 10
          return 0;
      }
      
      8.6 指向指针的指针

      指针不仅可以指向普通变量,还可以指向其他指针。

      int a = 10;
      int *p = &a;
      int **pp = &p;  // pp是一个指向指针p的指针
      printf("a = %d, *p = %d, **pp = %d\n", a, *p, **pp);
      
      8.7 动态内存分配

      C语言提供了一组函数用于动态分配和释放内存。

      • malloc:分配指定字节数的内存
      • calloc:分配指定数量的内存块,并初始化为零
      • realloc:重新分配内存
      • free:释放内存
      #include <stdio.h>
      #include <stdlib.h>
      
      int main() {
          // 使用malloc分配内存
          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 + 1;
          }
      
          for (int i = 0; i < 5; i++) {
              printf("arr[%d] = %d\n", i, arr[i]);
          }
      
          // 释放内存
          free(arr);
      
          return 0;
      }
      
      指针类型 描述
      普通指针 存储变量的地址
      指向指针的指针 存储指针的地址
      动态内存分配 使用malloc, calloc, realloc, free进行内
      8.8 综合示例
      #include <stdio.h>
      #include <stdlib.h>
      
      // 函数声明
      void swap(int *a, int *b);
      
      int main() {
          // 指针基本操作
          int a = 10;
          int *p = &a;
          printf("a = %d, *p = %d\n", a, *p);
      
          // 指针运算
          int arr[5] = {1, 2, 3, 4, 5};
          p = arr;
          for (int i = 0; i < 5; i++) {
              printf("arr[%d] = %d, *(p + %d) = %d\n", i, arr[i], i, *(p + i));
          }
      
          // 函数中的指针参数
          int x = 10, y = 20;
          swap(&x, &y);
          printf("x = %d, y = %d\n", x, y);
      
          // 指向指针的指针
          int **pp = &p;
          printf("a = %d, *p = %d, **pp = %d\n", a, *p, **pp);
      
          // 动态内存分配
          int *dynamicArr = (int *)malloc(5 * sizeof(int));
          if (dynamicArr == NULL) {
              printf("Memory allocation failed\n");
              return 1;
          }
          for (int i = 0; i < 5; i++) {
              dynamicArr[i] = i + 1;
          }
          for (int i = 0; i < 5; i++) {
              printf("dynamicArr[%d] = %d\n", i, dynamicArr[i]);
          }
          free(dynamicArr);
      
          return 0;
      }
      
      void swap(int *a, int *b) {
          int temp = *a;
          *a = *b;
          *b = temp;
      }
      

      结论

              本文详细介绍了C语言的基础知识,从基本语法、变量、控制结构、函数、数组一直到指针。通过代码示例和表格总结,帮助你更好地理解各个知识点。希望这些内容能够为你打下坚实的基础,进一步深入学习C语言。

      综合示例

      #include <stdio.h>
      #include <stdlib.h>
      
      // 函数声明
      // add 函数用于返回两个整数的和
      int add(int x, int y);
      
      // swap 函数用于交换两个整数的值
      void swap(int *a, int *b);
      
      // factorial 函数用于计算一个整数的阶乘
      int factorial(int n);
      
      // printArray 函数用于打印数组的内容
      void printArray(int *arr, int size);
      
      // initializeMatrix 函数用于初始化一个2x3的矩阵
      void initializeMatrix(int matrix[2][3]);
      
      int main() {
          // 基本数据类型和变量
          int a = 10;          // 整型变量
          float b = 5.5;       // 浮点型变量
          char c = 'A';        // 字符型变量
          const int MAX = 100; // 常量,值不可改变
      
          // 算术运算符和关系运算符的使用
          int sum = add(a, 5); // 调用 add 函数计算 a 和 5 的和
          if (sum > MAX) {     // 使用关系运算符比较 sum 和 MAX
              printf("Sum is greater than MAX\n");
          } else {
              printf("Sum is less than or equal to MAX\n");
          }
      
          // 逻辑运算符
          if (a > 0 && b > 0) { // 使用逻辑运算符检查 a 和 b 是否都为正数
              printf("a and b are positive\n");
          }
      
          // 控制结构
          // 条件语句
          if (a > 0) {                   // if 语句检查条件是否为真
              printf("a is positive\n");
          } else if (a == 0) {           // else if 语句检查另一个条件
              printf("a is zero\n");
          } else {                       // else 语句处理所有其他情况
              printf("a is negative\n");
          }
      
          // switch 语句
          switch (c) {                   // 根据变量 c 的值执行相应的 case 语句
              case 'A':
                  printf("Character is A\n");
                  break;                 // break 语句用于退出 switch 语句
              case 'B':
                  printf("Character is B\n");
                  break;
              default:                   // default 语句处理所有未匹配的情况
                  printf("Character is not A or B\n");
          }
      
          // 循环语句
          // for 循环
          for (int i = 0; i < 5; i++) {  // for 循环用于重复执行代码块,直到条件为假
              printf("for loop: i = %d\n", i);
          }
      
          // while 循环
          int j = 0;
          while (j < 5) {                // while 循环在每次迭代前检查条件
              printf("while loop: j = %d\n", j);
              j++;
          }
      
          // do-while 循环
          int k = 0;
          do {                           // do-while 循环先执行代码块,然后检查条件
              printf("do-while loop: k = %d\n", k);
              k++;
          } while (k < 5);
      
          // 跳转语句
          for (int l = 0; l < 10; l++) {
              if (l == 5) {
                  break; // 退出循环
              }
              if (l % 2 == 0) {
                  continue; // 跳过当前迭代
              }
              printf("break and continue: l = %d\n", l);
          }
      
          // 数组和指针
          int arr[5] = {1, 2, 3, 4, 5};  // 定义一个包含5个整数的一维数组
          printArray(arr, 5);            // 调用 printArray 函数打印数组内容
      
          // 函数中的指针参数
          int x = 10, y = 20;
          swap(&x, &y);                  // 调用 swap 函数交换 x 和 y 的值
          printf("After swap: x = %d, y = %d\n", x, y);
      
          // 递归函数
          int fact = factorial(5);       // 调用 factorial 函数计算 5 的阶乘
          printf("Factorial of 5: %d\n", fact);
      
          // 多维数组
          int matrix[2][3];              // 定义一个2x3的二维数组
          initializeMatrix(matrix);      // 调用 initializeMatrix 函数初始化矩阵
          for (int i = 0; i < 2; i++) {
              for (int j = 0; j < 3; j++) {
                  printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
              }
          }
      
          // 字符串
          char str[] = "Hello, World!";  // 定义一个字符串(字符数组)
          printf("%s\n", str);
      
          // 动态内存分配
          int *dynamicArr = (int *)malloc(5 * sizeof(int)); // 使用 malloc 分配内存
          if (dynamicArr == NULL) {       // 检查内存分配是否成功
              printf("Memory allocation failed\n");
              return 1;
          }
          for (int i = 0; i < 5; i++) {
              dynamicArr[i] = i + 1;      // 初始化动态数组
          }
          printArray(dynamicArr, 5);      // 打印动态数组内容
          free(dynamicArr);               // 释放动态分配的内存
      
          return 0;
      }
      
      // 函数定义
      int add(int x, int y) {
          // 返回两个整数的和
          return x + y;
      }
      
      void swap(int *a, int *b) {
          // 交换两个整数的值
          int temp = *a;
          *a = *b;
          *b = temp;
      }
      
      int factorial(int n) {
          // 递归计算整数 n 的阶乘
          if (n == 0) {
              return 1;
          }
          return n * factorial(n - 1);
      }
      
      void printArray(int *arr, int size) {
          // 打印数组的内容
          for (int i = 0; i < size; i++) {
              printf("arr[%d] = %d\n", i, arr[i]);
          }
      }
      
      void initializeMatrix(int matrix[2][3]) {
          // 初始化一个2x3的矩阵
          for (int i = 0; i < 2; i++) {
              for (int j = 0; j < 3; j++) {
                  matrix[i][j] = i * 3 + j + 1; // 按顺序赋值
              }
          }
      }
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://weidonglang.blog.csdn.net/article/details/139422906,作者:小魏冬琅,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Java: mysql-connector下载教程(手把手)

      下一篇:IDEA中上传Java项目到Gitee中

      相关文章

      2025-05-19 09:04:14

      复杂度的OJ练习

      复杂度的OJ练习

      2025-05-19 09:04:14
      代码 , 复杂度 , 思路 , 数组 , 算法
      2025-05-16 09:15:24

      如何将一串数字用函数的方法倒过来(C语言)

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24
      函数 , 数字 , 数组
      2025-05-16 09:15:24

      jQuery遍历对象、数组、集合

      jQuery遍历对象、数组、集合

      2025-05-16 09:15:24
      jQuery , 对象 , 数组 , 遍历 , 集合
      2025-05-16 09:15:17

      递归,搜索,回溯算法(3)之穷举,暴搜,深搜,回溯,剪枝

      递归,搜索,回溯算法(3)之穷举,暴搜,深搜,回溯,剪枝

      2025-05-16 09:15:17
      回溯 , 子集 , 数组 , 算法 , 递归
      2025-05-14 10:33:31

      计算机小白的成长历程——习题演练(函数篇)

      计算机小白的成长历程——习题演练(函数篇)

      2025-05-14 10:33:31
      函数 , 字符串 , 数组 , 知识点 , 编写 , 迭代 , 递归
      2025-05-14 10:33:31

      计算机小白的成长历程——数组(1)

      计算机小白的成长历程——数组(1)

      2025-05-14 10:33:31
      strlen , 个数 , 元素 , 内存 , 十六进制 , 地址 , 数组
      2025-05-14 10:33:16

      C++ 11新特性之unique_ptr

      在C++ 11标准中,智能指针作为一种强大的资源管理工具被引入,极大地提升了代码的健壮性和安全性。其中,std::unique_ptr作为唯一所有权智能指针,以其独特的非拷贝特性及自动内存释放机制,成为现代C++编程中的重要组件。

      2025-05-14 10:33:16
      ptr , std , unique , 指向 , 指针 , 赋值
      2025-05-14 10:07:38

      C++ 11新特性之shared_ptr

      在C++ 11标准中,智能指针作为一种自动资源管理工具被引入,极大地提升了代码的健壮性和安全性。其中,std::shared_ptr作为多所有权智能指针,凭借其独特的引用计数机制和内存自动释放功能,成为现代C++开发中的重要组件。

      2025-05-14 10:07:38
      ptr , shared , std , 引用 , 抛出 , 指针 , 计数
      2025-05-14 10:02:48

      typescript 将数组清空

      在TypeScript或JavaScript开发中,数组是用于存储和管理一组数据的基础数据结构。当需要清空一个数组时,有多种方法可以实现,而选择合适的方法不仅影响代码的可读性,还会对性能产生一定的影响。不同场景下,选择适合的清空数组的方法至关重要。

      2025-05-14 10:02:48
      length , pop , 引用 , 数组 , 方法
      2025-05-13 09:53:13

      计算机萌新的成长历程18——指针

      计算机要存储数据的话有以下几种途径,按访问速度由快到慢来排列分别是:寄存器>高速缓存>内存>硬盘。它们的存储空间大小是依次增大的,寄存器的存储空间大小最小,硬盘存储空间大小最大。

      2025-05-13 09:53:13
      内存 , 变量 , 地址 , 寄存器 , 指针
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5255687

      查看更多

      最新文章

      复杂度的OJ练习

      2025-05-19 09:04:14

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24

      C++ 11新特性之unique_ptr

      2025-05-14 10:33:16

      C++ 11新特性之shared_ptr

      2025-05-14 10:07:38

      Java 两个小时以后

      2025-05-13 09:50:28

      用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges

      2025-05-13 09:49:12

      查看更多

      热门文章

      Arrays类的使用

      2023-06-08 06:23:00

      C语言结构体与结构体指针的使用

      2023-03-08 10:38:36

      C++入门篇之C++ 指针

      2023-03-14 11:26:53

      指针(*)、取地址(&)、解引用(*)与引用(&)

      2023-04-10 08:54:19

      Python打乱列表/数组原顺序,新列表/数组中元素随机分布

      2023-04-13 09:36:44

      Java 程序设计 第2章 Java基本语法 笔记

      2023-02-24 09:13:25

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      C++类与对象(一)

      Java小白入门到实战应用教程-运算符详解

      (73)数组串联(74)左右元素和的差值

      【C++ 贪心 双指针】2576. 求出最多标记下标|1843

      用go语言,给定一个只包含正整数且下标从0开始的数组nums。

      【c语言实现动态开辟内存以及使用柔性数组成员】

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号