Linux C语言第九天学习笔记:二维数组与函数
2026/7/30 5:29:07 网站建设 项目流程

📌 今日学习内容概览

今天的学习从二维数组开始,延续到函数相关知识点,这是C语言从基础语法走向模块化编程的关键一步。

一、二维数组

1.1 二维整型数组

📖 定义格式
数据类型 数组名[行数][列数];

示例:

inta[2][3];// 2行3列的二维数组

⚠️注意:行数和列数必须为常量,不能使用变量。

🔍 元素访问

通过行下标和列下标访问每个元素,下标从0开始:

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
💾 存储方式

二维数组在内存中逐行从左到右连续存储,可以理解为一维数组构成的一维数组。

inta[2][3];// 存储顺序:a[0][0] → a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]

数组所占空间大小 = 数据类型大小 × 元素总个数(行数 × 列数)

📋 初始化方式

全部初始化:

inta[2][3]={1,2,3,4,5,6};inta[2][3]={{1,2,3},{4,5,6}};

局部初始化:

inta[2][3]={1,2,3,4};// 剩余元素补0inta[2][3]={{1,2},{3}};// 每行剩余补0inta[2][3]={0};// 全部初始化为0

默认初始化:

inta[][3]={1,2,3,4,5,6};// 行可省略,列不可省略

1.2 二维字符型数组

🎯 功能

主要用于存储和操作多个字符串,即字符串数组。

📖 定义格式
char数组名[行数][列数];

示例:

charstr[5][32];// 可以存储5个字符串,每个最长31个字符
🔍 元素访问
str[0]// 访问第1行字符串(char[32]类型)str[0][2]// 访问第1行第3个字符(char类型)
📋 初始化方式
// 方式1:逐个字符初始化charstr[5][32]={{'h','e','l','l','o','\0'},{'w','o','r','l','d','\0'}};// 方式2:字符串初始化(推荐)charstr[5][32]={{"hello"},{"world"},{"how"},{"are"},{"you"}};// 方式3:简化写法(最常用)charstr[5][32]={"hello","world","how","are","you"};// 全部初始化为0charstr[5][32]={0};

二、函数

函数是C语言模块化编程的核心,能够避免代码重复,让程序结构更清晰。

2.1 函数的三种形式

① 函数的定义
函数类型 函数名(数据类型1形参1,数据类型2形参2,...){函数体;return返回值;}
  • 函数名:命名规则与变量相同
  • 形参:形式参数,表示函数处理数据的方式
  • 函数类型:返回值类型,默认为int;无返回值需写void
  • 返回值:函数运行结果,类型需与函数类型一致
② 函数的调用
函数名(实参1,实参2,...);
  • 实参个数与形参个数必须一一对应
  • 实参与形参类型不匹配时,会自动强制转换
③ 函数的声明

如果被调函数定义在主调函数之后,需要提前声明:

// 声明intadd(inta,intb);intmain(void){intsum=add(3,5);// 调用return0;}// 定义intadd(inta,intb){returna+b;}

如果被调函数定义在主调函数之前,则无需声明。

2.2 变量的作用域与生存周期

类型作用域生存周期
局部变量定义它的最近一对大括号内执行到定义时开辟,超出作用域回收
全局变量整个文件均可使用程序开始到结束

2.3 变量的存储类型

存储类型 数据类型 变量名;
存储类型关键字特点
自动型auto(默认)存储在栈区,未初始化随机值
寄存器型register存储在CPU寄存器,存取速度快
外部声明extern声明变量/函数在其他文件中定义
静态型static存储在静态区,未初始化默认为0,程序结束才回收

static 的特殊用途:

  1. 限制变量/函数作用域仅在当前文件,避免多文件编程时命名冲突
  2. 静态变量只初始化一次,多次调用保持上次的值

2.4 函数传参:值传递

C语言函数传参默认是值传递:

voidswap(inta,intb){inttmp=a;a=b;b=tmp;}intmain(void){intx=10,y=20;swap(x,y);printf("x = %d, y = %d\n",x,y);// 仍然是10, 20return0;}

🔑核心理解:形参是实参的副本,修改形参不影响实参。

💡 今日学习心得

今天从二维数组过渡到函数,最大的感受是:

  1. 二维数组的存储逻辑——连续存储、逐行排列,这为理解指针和内存布局打下基础。
  2. 函数的模块化思想——将重复逻辑封装成函数,代码可读性和复用性大大提升。
  3. 值传递的本质——理解形参是实参的副本,对后续学习指针(地址传递)至关重要。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询