zoukankan      html  css  js  c++  java
  • C++程序设计(关于函数中数组传递的一点心得)

    题目:

    10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下:

    (1) 及格线是10的倍数;

    (2) 保证至少有60%的学生及格;

    (3) 如果所有的学生都高于60分,则及格线为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*型指针
  • 相关阅读:
    codeforces689A
    codeforces222A
    codeforces553A
    2021牛客国庆集训派对day6 J
    SVM--支持向量机
    压缩感知
    范数
    LeNet详解
    卷积神经网络(CNN)详解
    BP算法实例—鸢尾花的分类(Python)
  • 原文地址:https://www.cnblogs.com/warmbeast/p/5284864.html
Copyright © 2011-2022 走看看