news 2026/8/12 21:19:56

深入理解C语言中的static与函数传参

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解C语言中的static与函数传参

static:可以限制作用于,限制的对象为全局变量,或函数。

int a =10;

如果希望这个全局变量,只能在本1.c中使用要 static int a =10;

static int fun(); :希望fun函数只能在本模块1.c中使用

函数的调用

实参的个数要和形参的个数相同

int fun(int num) { printf("%d\n",num); } int main() { int a=20; fun(a); //main被称为主调函数,fun函数被称为被调函数 printf("%d\n",fun(a)) //main把a这个变量传递给了fun函数,a被称为实参 num被称为形参 }
  • 形参和实参变量名可以不一致
  • 若变量类型不一致,实参向形参类型转换
  • 形参是实参的一个复制品(形参和实参不是同一个变量,只是把a的变量(实参!)的内容,复制一份给形参num变量

函数的传参

  1. 传递值

  • 实参将值传递给形参,形参是一个副本(复制品)
  • 形参值的变化是无法影响实参的值

地址传递

在函数调用传参中,如果是传递的数组,这种即为地址传递。形参获得了实参对应内存空间地址,所以就可以通过形参修改实参

  • 在被调函数中,是可以通过修改形参,来修改主调中的实参。
  • 在传递数组过程中,如果使用直传递,那么被调函数中也需要创建一样大的数组,有时候数组可能很大,在被调函数结束的时候,这段空间需要回收,在C语言中,认为数组也是值传递的话,效率非常低下,所以传递数组的时候默认地址传递。

整型数组传参

#include<stdio.h> #include<stdlib.h> #include<time.h> void arry_fill(int a[],int len) { int i; srand(time(NULL)); for(i=0;i<len;i++) { a[i]=rand()%100; } } void bobble(int a[],int len) { int i,j,t; for(i=len-1;i>0;i--) { for(j=0;j<i;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } void print_arry(int a[],int len) { int i; for(i=0;i<len;i++) { printf("%d ",a[i]); } printf("\n"); } int main() { int arr[10]; int len=10; printf("before your input: "); arry_fill( arr, len); print_arry(arr,len); printf("\n"); printf("result is : "); bobble(arr,len); print_arry(arr,len); return 0; }

字符串类型传参

  1. 形参依然可以修改实参
  2. 在被调函数定义中,只需要传递数组名,不需要长度,每个字符串都有结束标志‘0’
#include <stdio.h> void my_gets(char str[] ,int len) { int i = 0; for( i=0;i<len-1;i++) //c89 c99 { scanf("%c",&str[i]); if(' '==str[i]) { break; } } str[i]='\0'; } void show_str(char str[]) { int i = 0 ; for(i=0;'\0'!=str[i];i++) { printf("%c",str[i]); } } int mystrlen(char str[]) { //return strlen(str); } int main() { char str[100]={0}; printf("input str:"); int len = sizeof(str)/sizeof(str[0]); my_gets(str,100); // char [] show_str(str); //printf("str:%s\n",); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 21:19:17

指针运算与内存访问详解

指针运算符1.不同类型指针 1char* 偏移量一个字节int * 四个float* 四个doudble* 八个2.不同类型执行解引用操作char* 执行解引用操作&#xff0c;从指针存储地址开始&#xff0c;往后&#xff08;地址变大的方向&#…

作者头像 李华
网站建设 2026/8/12 21:16:23

Vue可拖拽组织树组件实战:从zm-org-tree选型到性能优化全解析

1. 从“拖不动”到“丝滑拖拽”&#xff1a;一个前端组件库的实战选型心路 最近在重构一个后台管理系统&#xff0c;里面有个经典模块&#xff1a;组织架构树。产品经理拿着原型图过来&#xff0c;指着那个树形结构说&#xff1a;“这里要支持拖拽调整部门层级&#xff0c;用户…

作者头像 李华
网站建设 2026/8/12 21:15:29

柳州网站建设推荐:揭秘那些藏在本地企业背后的流量密码与避坑指南,为什么这3点你必须要知道

各位老板,各位正在为自家品牌数字形象头疼的创业伙伴们,大家好。我是你们的老朋友,一个在柳州这片热土上摸爬滚打多年的互联网老兵。今天不聊虚的,不整那些高大上但看不懂的概念,咱们就坐在那螺蛳粉馆子的旁边,一边嗦粉,一边掏心窝子聊聊那个让很多柳州企业家既爱又恨的…

作者头像 李华
网站建设 2026/8/12 21:14:35

周口网站建设73data深度解析:为何中小企业主应该关注专业的互联网营销解决方案,揭秘行业背后那些不为人知的真相与服务细节

在这个数字化浪潮席卷每一个角落的时代,如果你还认为拥有一个网站仅仅是为了展示一个企业的形象,那可能真的有点落伍了。作为一名在行业里摸爬滚打多年的从业者,我见过太多老板拿着几百万的广告费打电视、电台,最后却连个精准的潜在客户都抓不住。相反,有些不起眼的小店,…

作者头像 李华
网站建设 2026/8/12 21:08:34

武汉数据治理服务怎么选?本地服务商分析与推荐

在武汉&#xff0c;随着光谷科技企业、江汉金融机构、沌口制造工厂的数字化转型加速&#xff0c;“数据治理” 已经从 “可选服务” 变成 “刚需能力”。但面对市场上五花八门的服务商&#xff0c;很多企业都会困惑&#xff1a;武汉数据治理服务哪个好&#xff1f; 作为深耕武汉…

作者头像 李华