C++程序设计(关于函数中数组传递的一点心得)
题目:
10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下:
(1) 及格线是10的倍数;
(2) 保证至少有60%的学生及格;
#include "stdafx.h"
#include<iostream>
using namespace std;
void func1(int a[])
{
int t = 0;
for (int i = 0; i < 10; i++)
{
for (int j = i + 1; j < 10; j++)
{
if (a[i]>a[j])
{
t = a[j];
a[j] = a[i];
a[i] = t;
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10] = { 0 };
for (int m = 0; m < 10; m++)
{
cin >> a[m];
}
func1(a); //这里注意数组在函数中传递的方法,这里传递的数组名a其实就代表数组的首地址,传递到func1()函数中,然后在func1()函数中就可以通过下标的方式a[i]来访问数组中的元素
for (int v = 0; v < 10; v++)
cout << a[v]<<endl;
if (a[0] >= 60)
cout << "及格线为60!" << endl;
else
cout << "及格线为" << (a[4]/10) * 10 << "!" << endl;
return 0;
}
主要想讲的是函数中数组的传递问题,其实函数中数组的传递都是通过指针来实现的:
数组在C++中是以指针的形式进行传递的。
我们可以把形参写成指针形式,也可以写成数组形式,但本质上传递的都是指针。引用《C++ Primer》上的一个例子:
//尽管形式不同,但这三个print函数是等价的
//每个函数都有一个const int*类型的形参
void print(const int*);
void print(const int[]); //可以看出来,函数的意图是作用于一个数组
void print(const int[10]); //这里的维度表示我们期望数组含有多少元素,实际不一定
以上三种形式的声明是等价的,当调用print函数时,编译器只检查传入的参数是否是(或能转换成)const int*:
int i = 0, j[2] = {0, 1};
print(&i); //正确:&i的类型是int*
print(j); //正确:j转换成int*并指向j[0],j其实就是数组的首地址,传递给int*型指针
C++程序设计(关于函数中数组传递的一点心得)的更多相关文章
- 1104解决ecos挂件中数组传递的相关问题。
1.挂件综述: 挂件组成:_config.html 后台配置,即点添加时的弹出框. default.html 前台显示,即在前台显示出来的页面. widget.php 设置挂件的基本信息.. ...
- js 中数组传递到后台controller 批量删除
/*批量删除*/function datadel(url) { var ids=[]; $("input[type='checkbox']:checked").each(funct ...
- spring mvc中使用freemark的一点心得
参考文档: FreeMarker标签与使用 连接http://blog.csdn.net/nengyu/article/details/6829244 freemarker学习笔记--指令参考: ht ...
- QSQL导出mapfile和mapfile中PostGIS连接的一点心得
昨天弄QSQL导出mapfile,一直遇到下图的错误 原因是QGIS在渲染图层时候使用了新的符号,在图层上右键-属性,如下图将符号修改就OK了 然后我尝试使用QGIS连接本机PostGIS数据,结果老 ...
- python函数中参数是如何传递的?
python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象,即指向不同对象. 当在函数中修改传递进来的变量指向另一个对象时,实参的对象不会改变. >>> ...
- 解决dva dispatch yield生成器函数中异常中断,无法继续调用的问题
在生成器函数中,哪怕是一点报错.都会导致程序无法再次执行.这是yield的特性导致的.最简单的解决方案,就是将所有报错回避,并且做好交互. 0.dva全局管理出错状态 https://dvajs.co ...
- C语言中数组名作为参数进行函数传递
用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的 ...
- C语言中的函数、数组与指针
1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念: 函 ...
- js函数中参数的传递
数据类型 在 javascript 中数据类型可以分为两类: 基本类型值 primitive type,比如Undefined,Null,Boolean,Number,String. 引用类型值,也就 ...
随机推荐
- 样式PC和手机页面
/*媒体查询--当页面大于1200px时*/ @media (min-width: 1200px) { } /*在922和1199像素之间的屏幕里,中等屏幕*/ @media (min-width: ...
- CUDA ---共享存储器
原文地址:http://www.cnblogs.com/1024incn/p/4605502.html shared memory在之前的博文有些介绍,这部分会专门讲解其内容.在global Memo ...
- 认识Java
java出生地:SUN Microsystems Inc<开源> -SUN : Standford University Network java之父:James Gosling ...
- Java随笔一
1.继承:子类调用超类构造器时,super调用构造器的语句必须是子类构造器的第一条语句: Java没有多继承,但是可以构造实现多个接口的类: 2.多态:Java 中,对象变量是多态的.一个父类变量既可 ...
- js 小技巧
如果想让js每次加载时,都要执行, 那么在 <script type="text/javascript" >中加一个属性reload="1", &l ...
- Cocos2d-x win7 + vs2010 配置图文详解
Cocos2d-x win7 + vs2010 配置图文详解 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d ...
- 一个人的 ClojureScript 技术栈
作者:题叶链接:https://zhuanlan.zhihu.com/p/24425284来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.今天(昨天)分享完关于 Cloj ...
- 移动端的拖拽这个demo实现的功能
SQL数据库适合那些需求确定和对数据完整性要去严格的项目.NoSQL数据库适用于那些对速度和可扩展性比较看重的那些不相关的,不确定和不断发展的需求. 总所周知,网页的加载速度跟图片是有很大的关系的,因 ...
- ajax 选项卡
Ajax其实就是交互式网页应用开发技术包括以下几个方面: 1.XHTML和CSS 2.使用DOM作为动态显示和交互 3.使用XML和XSLT 做数据交互和操作 (这些完全不太懂) 4.使用XMLHtt ...
- php字符串处理函数大全
addcslashes - 为字符串里面的部分字符添加反斜线转义字符addslashes - 用指定的方式对字符串里面的字符进行转义bin2hex - 将二进制数据转换成十六进制表示chop - ...