ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c语言传入数组

2021-01-22 15:34:13  阅读:99  来源: 互联网

标签:arr 函数 传入 int CaoZuo 数组 printf 变量 语言


今天在写一个编辑二进制文件的程序时回想到了这个知识点,就是函数某个函数内使用并改变其他函数的变量。本来是可以用全局变量的方式快速解决的,但还是觉得全局变量能不用尽量不用,养个好习惯。

我比较习惯用这两种写法来传变量给函数:

1)最简单的,直接传进来这个变量,但无法更改原来的变量本身,因为函数运行完其内存就清掉了

void CaoZuo(int i)
{
  i -= 2;
  printf("%d", i); // A处
}


int main()
{
  int i;     
  CaoZuo(i); 
  printf("%d", i);// B处
}

比如主函数内i为5,那么A处是3但B处还是5

2)但是如果传入的是原先变量的地址就不一样了,因为主函数只运行到一半所以内存不会清掉,在CaoZuo函数内改变地址里的值是可行的

void CaoZuo(int *i)
{
  *i -= 2;
  printf("%d", *i); // A处
}


int main()
{
  int i;     
  CaoZuo(&i); 
  printf("%d", i);// B处
}

这里传入CaoZuo函数的是主函数中i的地址,在函数内是对地址存储的值来操作,这样A处和B处都会是3

这两个方法都是实用的,要看子函数内是只需要知道变量是多少还是要改变变量本身

有点小意思了,我们接下来看数组的传入:

int main()
{
  int a[5] = {'2', '3', '6', '4', '9'};
  BuGaiBian(a);
  printf("%d", a[1]); // A处
  Gaibian(a);
  printf("%d", a[1]); // B处
}

void BuGaiBian(int arr[])
{
  arr[1] = 5;
}

void GaiBian(int *arr)
{
  arr[1] = 5;
}

A处仍然是3,B处就是5了

标签:arr,函数,传入,int,CaoZuo,数组,printf,变量,语言
来源: https://www.cnblogs.com/nuoday/p/14313599.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有