写一个函数,每调用一次函数,就会将num的值增加1,以及可能遇到的问题

1.传址

int AddNumAddress(int *p)
{return ++(*p);
}
int main()
{int num = 1;int arr1=AddNumAddress(&num);int arr2 = AddNumAddress(&num);    printf("%d  %d\n", arr1, arr2);system("pause");return 0;
}

2.全局变量

int num = 1;
int AddNum()
{   return ++num;
}
int main()
{int arr1=AddNum();int arr2 = AddNum();printf("%d  %d\n", arr1, arr2);system("pause");return 0;
}

3.static修饰变量

int AddNum()
{static int num = 1;return ++num;
}
int main()
{int arr1=AddNum();int arr2 = AddNum();printf("%d  %d\n", arr1, arr2);system("pause");return 0;
}

两种错误写法:
  错误写法一:

int AddNum(int num)
{return ++num;
}
int main()
{static int num = 1;int arr1=AddNum(num);int arr2 = AddNum(num);printf("%d  %d\n", arr1, arr2);system("pause");return 0;
}

错误原因:
  函数调用,形参会实例化,形参是实参的一份临时拷贝,函数中的num和主函数中的num此时不是一个变量,所以对函数操作的形参num,每调用一次,主函数的num并不会递增。
错误写法二:

int num = 1;
int AddNum(int num)
{   return ++num;
}
int main()
{int arr1=AddNum(num);int arr2 = AddNum(num);printf("%d  %d\n", arr1, arr2);system("pause");return 0;
}

错误原因,
  创建并初始化num为全局变量,在主函数中作为实参传给函数,此时函数调用会发生形参实例化,形参对实参拷贝,此时函数里面的num和全局变量num并没有直接关系,函数中对num++,并不会影响全局num的值,所以导致每调用一次1,num并不会递增。
  以上两个问题是我遇到的问题,不知道大家有和我一样的嘛,写出来供大家参考,欢迎提问。

三种方法:写一个函数,每调用一次函数,就会将num的值增加1,&&可能遇到的问题相关推荐

  1. 【C语言】详解strlen函数 | 模拟实现strlen函数的三种方法 | 写库函数的人是如何实现这个函数的

    前言: 本篇将专门为 strlen 函数进行讲解,总结了模拟实现 strlen 函数的三种方法,并对其进行详细的解析.手写库函数是非常常见的题目,希望通过本篇博客能够加深大家对 strlen 的理解. ...

  2. JavaScript两种方法来定义一个函数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 产品经理必须知道的一点知识:三种方法判断一个产品该不该做

    前言 想明白为什么不要做这个产品 有时候可能比为什么要做这个产品更加重要,因为在错误的道路走的越远,伤害就越大. - 1 -这个产品有无降低交易成本 简单来说就是为了达成一笔交易 买卖双方要付出的时间 ...

  4. 图像灰度化的三种方法(matlab、C++、Python实现)

    灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...

  5. Matlab 计算均方误差MSE的三种方法

    Matlab 计算均方误差MSE的三种方法 数据说明: ytest 测试集y,真实的y值,是一维数组: ytest_fit 基于测试集 x 预测的y值,是一维数组: test_error 是预测误差. ...

  6. ​Word怎么转换成PDF格式?这三种方法教你如何转换

    怎么把Word文档转换成PDF文件格式呢?相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件,编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送,原因就是PDF格式独有的兼容性和稳定性能 ...

  7. 写一个函数返回参数二进制中 1 的个数(三种方法)

    1.运用了除法,取余方式递推出结构 2.运用右移符(>>)运算 3.利用算术与(&)运算 三种方法效率越来越高,减少成本 #include<stdio.h>int Nu ...

  8. JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析

    JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析 业务分析 初版的问题 解决方案 传统的 for 循环 不使用 for 循环的解决方案 分析 forEach ...

  9. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

最新文章

  1. P2473 [SCOI2008]奖励关
  2. 阿里内核月报2015年03月
  3. STL容器之优先队列
  4. Java程序员从笨鸟到菜鸟之(四)java开发常用类(包装,数字处理集合等)(上)
  5. 可以直视烤箱里面的食物吗?
  6. pandas访问分组里面的数据_实战用pandas+PyQt5制作一款数据分组透视处理工具
  7. Linux系统编程:pipe匿名管道的使用,实现linux命令下管道命令
  8. python的课程ppt_第4课 初识Python复习课程.ppt
  9. jsp引入页面,即包含文件的两种方法介绍
  10. 【AJAX 教程】JS 原生 AJAX 请求
  11. 怎么在WORD2016里给文档空白处添加下划线,干货在这里,WORD2016空白处如何添加下划线
  12. PON串口链接上网步骤
  13. echarts3d城市配置项
  14. 微生物群落组装过程(assembly processes)
  15. angular 自定义打包文件名
  16. 天使投资和风险投资有何区别?
  17. 最新云开秒赞系统公益版网站源码
  18. python爬取音乐排行_python爬取网易云音乐热歌榜实例代码
  19. (三).类的小知识点
  20. 网安学习第一天——创建一个WNMP站点

热门文章

  1. 记录一次公司生产服务器被前端程序猿 rm -rf /的血泪恢复史
  2. 卖家付出佣钱的付出宝账户
  3. linux l7,linux iptables L7-filter
  4. FL Studio 20 学习笔记
  5. CTA-861标准解析EDID的VSDB与VDB
  6. SQL Server索引的创建与维护
  7. 如何像学霸一样高效学习?
  8. 博图V15仿真时出现“实际在线CPU当前连有一些应用程序。只有关闭它们后才可启动仿真器”的问题,不弹出仿真窗口
  9. 从乙方到甲方,我用了六年的时间
  10. 三维翼智发光字3D字壳打印机有什么功能?