当前位置: 首页 > news >正文

c语言学习(dyas10)

默认类型与函数传参规则

不显式声明变量类型时,默认视为 int 型。函数参数传递为值传递(复制实参的值给形参),形参修改不影响实参。

示例:值传递的局限性

void modify(int i) { i = 11; }  
int main() {  int i = 10;  modify(i);  printf("%d", i); // 输出仍为10  
}  

需通过传递指针(地址)修改实参值。


函数调用与栈机制

函数调用时,系统通过栈管理执行流程:

        入栈:保存主调函数的返回地址、局部变量及形参。

        出栈:恢复主调函数现场,继续执行。

        栈区限制:Linux 默认栈空间为 8MB,需避免栈溢出。

内存区域划分

        堆区:手动申请/释放(如 malloc/free)。

        静态区:存储全局变量和静态变量。

        字符串常量区:存放常量字符串。

        代码区:编译后的机器指令。


递归调用示例

阶乘计算

int factorial(int n) 
{  if(1 == n){return 1;else{ return n * factorial(n - 1); } 
}  

斐波那契数列

int fibonacci(int n) 
{   if(1 == n ||2 == n){return 1;else{ return fibonacci(n - 1) + fibonacci(n - 2);  }
}  


数组作为函数参数

数组作为参数时,实际传递的是首元素地址。需额外传递数组长度以避免越界。

示例:数组求和

int sum(int arr[], int size) 
{  int total = 0;  for (int i = 0; i < size; i++){ total += arr[i];}  return total;  
}  

注意:形参 int arr[] 等价于 int *arr,函数内无法通过 sizeof(arr) 获取数组长度。

传递字符数组指针

字符数组在函数参数中通常以指针形式传递,数组名退化为指向首元素的指针:

int printString(char str[]) 
{int i;while(s[i]){++i;}return i;
}

注意:字符数组可以不传递长度。


关键注意事项

传参顺序:C 语言函数参数从右向左入栈。

递归风险:深度递归可能导致栈溢出。

指针传递:需修改实参时,传递变量地址(如 &i),形参为指针类型(如 int *p)。

http://www.dtcms.com/a/296363.html

相关文章:

  • Kubernetes Kubelet 资源配置优化指南:从命令行参数到配置文件的最佳实践
  • Spring AI - ChatModel接口演示
  • TCO,UDP考点
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • SpringBoot航空订票系统的设计与实现
  • 视频模型国产PK国外?
  • 金仓数据库:从国产替代到AI融合的破局之路
  • #来昇腾学AI 【十天成长计划】大模型LLM Prompt初级班
  • Linux的工具
  • 提取边界线的思路与原理
  • Linux---systemd自启动
  • 论文复现-windows电脑在pycharm中运行.sh文件
  • 嵌入式——C语言:函数②
  • webGis框架
  • 元计算推动产业元宇宙改变世界
  • 将Scrapy项目容器化:Docker镜像构建的工程实践
  • Web前端开发:JavaScript reduce() 方法
  • 借助AI学习开源代码git0.7之九diff-files
  • MCU中的系统总线
  • Android 与 Windows 文件路径的设计差异
  • 机器学习概述与 KNN 算法详解
  • ESP32- 项目应用1 智能手表 之更新天气#4
  • FANUC 机器人控制末端位置的示例程序
  • Windows 主机侧日志排查
  • 【YOLOv8改进 - 特征融合】FCM:特征互补映射模块 ,通过融合丰富语义信息与精确空间位置信息,增强深度网络中小目标特征匹配能力
  • 二、计算机网络技术——第5章:传输层
  • AWS S3 生命周期管理最佳实践:IoT Core 日志的智能存储优化
  • 康养休闲旅游服务虚拟仿真实训室:赋能人才培养的创新路径
  • Java:跨越时代的编程语言,持续引领技术潮流
  • [Office]数学公式插件