三种方法:写一个函数,每调用一次函数,就会将num的值增加1,&&可能遇到的问题
写一个函数,每调用一次函数,就会将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,&&可能遇到的问题相关推荐
- 【C语言】详解strlen函数 | 模拟实现strlen函数的三种方法 | 写库函数的人是如何实现这个函数的
前言: 本篇将专门为 strlen 函数进行讲解,总结了模拟实现 strlen 函数的三种方法,并对其进行详细的解析.手写库函数是非常常见的题目,希望通过本篇博客能够加深大家对 strlen 的理解. ...
- JavaScript两种方法来定义一个函数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 产品经理必须知道的一点知识:三种方法判断一个产品该不该做
前言 想明白为什么不要做这个产品 有时候可能比为什么要做这个产品更加重要,因为在错误的道路走的越远,伤害就越大. - 1 -这个产品有无降低交易成本 简单来说就是为了达成一笔交易 买卖双方要付出的时间 ...
- 图像灰度化的三种方法(matlab、C++、Python实现)
灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...
- Matlab 计算均方误差MSE的三种方法
Matlab 计算均方误差MSE的三种方法 数据说明: ytest 测试集y,真实的y值,是一维数组: ytest_fit 基于测试集 x 预测的y值,是一维数组: test_error 是预测误差. ...
- Word怎么转换成PDF格式?这三种方法教你如何转换
怎么把Word文档转换成PDF文件格式呢?相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件,编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送,原因就是PDF格式独有的兼容性和稳定性能 ...
- 写一个函数返回参数二进制中 1 的个数(三种方法)
1.运用了除法,取余方式递推出结构 2.运用右移符(>>)运算 3.利用算术与(&)运算 三种方法效率越来越高,减少成本 #include<stdio.h>int Nu ...
- JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析
JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析 业务分析 初版的问题 解决方案 传统的 for 循环 不使用 for 循环的解决方案 分析 forEach ...
- python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法
0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...
最新文章
- P2473 [SCOI2008]奖励关
- 阿里内核月报2015年03月
- STL容器之优先队列
- Java程序员从笨鸟到菜鸟之(四)java开发常用类(包装,数字处理集合等)(上)
- 可以直视烤箱里面的食物吗?
- pandas访问分组里面的数据_实战用pandas+PyQt5制作一款数据分组透视处理工具
- Linux系统编程:pipe匿名管道的使用,实现linux命令下管道命令
- python的课程ppt_第4课 初识Python复习课程.ppt
- jsp引入页面,即包含文件的两种方法介绍
- 【AJAX 教程】JS 原生 AJAX 请求
- 怎么在WORD2016里给文档空白处添加下划线,干货在这里,WORD2016空白处如何添加下划线
- PON串口链接上网步骤
- echarts3d城市配置项
- 微生物群落组装过程(assembly processes)
- angular 自定义打包文件名
- 天使投资和风险投资有何区别?
- 最新云开秒赞系统公益版网站源码
- python爬取音乐排行_python爬取网易云音乐热歌榜实例代码
- (三).类的小知识点
- 网安学习第一天——创建一个WNMP站点