精华内容
下载资源
问答
  • 但是数组作为函数参数的时候,sizeof(数组名)得到的是一个指针的大小,不再是一个数组的大小,这个时候最好是直接传递数组的同时,也把数组的维数也作为参数传进来。 ...
     

    【1】https://www.cnblogs.com/littleswan/p/11306073.html

    【2】数组做参数:https://www.cnblogs.com/li-peng/p/3608268.html

     

    常规数组计算大小的时候,可以直接借助sizeof函数。

     

    但是数组作为函数参数的时候,sizeof(数组名)得到的是一个指针的大小,不再是一个数组的大小,这个时候最好是直接传递数组的同时,也把数组的维数也作为参数传进来。

     
     
     

     

    展开全文
  • c++ 数组作为函数参数

    千次阅读 2018-04-12 22:12:22
    c++不允许向函数传递一个完整的数组作为参数,但是用户可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针,我所理解的指针就是一个地址,使用指针就是使用该地址。使用指针指向数组首地址。方式1void ...

    c++不允许向函数传递一个完整的数组作为参数,但是用户可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针,
    我所理解的指针就是一个地址,使用指针就是使用该地址。使用指针指向数组首地址。

    方式1

    void fun (int *param)

    {

    }

    形式参数是一个指针


    方式2

    void fun (int param[10])

    {

    }

    void fun1(int param[],int size)

    {

    }

    形式参数是一个已定义大小的数组


    方式3

    void fun(int param[])

    {

    }

    形式参数是一个未定义大小的数组

    实例:

    方式一方式三都可以:

    调用函数时

    假如数组为pos[1000]

    fun(pos);//正确

    fun(pos[])//错误

    fun   (pos[1000])//错误以上两种都是指向最后一个地址。个人理解有点乱,如果有错,希望有大神可以纠正





    展开全文
  • C++数组做函数参数

    2020-02-22 15:04:12
    主函数中初始化一个二维数组,表示一个矩阵,将每个元素都输出,然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第一个元素中,返回主函数之后输出各行元素的和。 #include <iostream> using...

    题目描述:

    主函数中初始化一个二维数组,表示一个矩阵,将每个元素都输出,然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第一个元素中,返回主函数之后输出各行元素的和。

    #include <iostream>
    using namespace std;
    
    void rowSum(int a[][4], int nRow) {
    	for (int i = 0; i < nRow; i++) {
    		for(int j = 1; j < 4; j++)
    			a[i][0] += a[i][j];
    	}
    }
    
    int main(){  
    
    	int table[3][4] = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}};
    	for (int i = 0; i < 3; i++){
    		for (int j = 0; j < 4; j++)
    			cout << table[i][j] << "   ";
    			cout << endl;
         }
    
    	rowSum(table, 3);     //调用子函数,计算各行和
    	for (i = 0; i < 3; i++) 
    		cout << "Sum of row " << i << " is " << table[i][0] << endl;
    
    	return 0;
    
    }
    

    结果为:
    在这里插入图片描述

    展开全文
  • 本文需要解决C++中关于数组的2个问题: 1. 数组作为函数参数,传值还是传址? 2. 函数参数中的数组元素个数能否确定? 先看下面的代码。

    本文需要解决C++中关于数组的2个问题:
    1. 数组作为函数参数,传值还是传址?
    2. 函数参数中的数组元素个数能否确定?

    先看下面的代码。

    #include <iostream>
    
    using namespace std;
    
    void testArrayArg(int a[])
    {
      cout << endl;
    
      cout << "in func..." << endl;
      cout << "array address: " << a << endl;
      cout << "array size: " << sizeof(a) << endl;
      cout << "array element count: " << sizeof(a) / sizeof(a[0]) << endl;
    
      cout << "changing the 4th element's value to 10." << endl;
      a[3] = 10;
    }
    
    int main()
    {
      int a[] = {1, 2, 3, 4, 5};
    
      cout << "in main..." << endl;
      cout << "array address: " << a << endl;
      cout << "array size: " << sizeof(a) << endl;
      cout << "array element count: " << sizeof(a) / sizeof(a[0]) << endl;
    
      testArrayArg(a);
    
      cout << endl << "the 4th element's value: " << a[3] << endl;
    
      return 0;
    }

    运行结果如下:

    in main...
    array address: 0012FF4C
    array size: 20
    array element count: 5

     

    in func...
    array address: 0012FF4C
    array size: 4
    array element count: 1
    changing the 4th element's value to 10.

     

    the 4th element's value: 10

     

    当我们直接将数组a作为参数调用testArrayArg()时,实参与形参的地址均是0012FF4C。并且,在testArrayArg()中将a[3]的值修改为10后,返回main()函数中,a[3]的值也已经改变。这些都说明C++中数组作为函数参数是传址

     

    特别需要注意的是,在main()中,数组的大小是可以确定的。

    array size: 20
    array element count: 5

     

    但作为函数参数传递后,其大小信息丢失,只剩下数组中第一个元素的信息。

     

    array size: 4
    array element count: 1

     

    这是因为C++实际上是将数组作为指针来传递,而该指针指向数组的第一个元素。至于后面数组在哪里结束,C++的函数传递机制并不负责。

     

    上面的特性可总结为,数组仅在定义其的域范围内可确定大小


    因此,如果在接受数组参数的函数中访问数组的各个元素,需在定义数组的域范围将数组大小作为另一辅助参数传递。则有另一函数定义如下:

    void testArrayArg2(int a[], int arrayLength)
    {
      cout << endl << "the last element in array is: " << a[arrayLength - 1] << endl;
    }

    可在main()中这样调用:

    testArrayArg2(a, sizeof(a) / sizeof(a[0]));

    这样,testArrayArg2()中便可安全地访问数组元素了。


    补充:数组作为函数参数时退化为指针!


    展开全文
  • C++ 数组函数参数时size变化问题

    千次阅读 2019-04-17 19:49:41
    数组,sizeof
  • 2数组的名字做函数参数时,这时函数的形参和实参必须都是数组类型,而且数组名字做函数参数时传递的是地址,把数组元素的首地址传递给形参,然后一一对应进行赋值,因此实参数组的元素个数不能少于形参数组的元素个...
  • C++数组作为函数参数

    千次阅读 2021-01-14 21:50:44
    好消息,好消息,数组也可当参数啦!!! 长这样, void arr(int a[]) ...void arr(int a[])//数组名作为函数参数,传递的是一个地址(或常量指针) { int i; for(i=0;i<5;i++) { printf("%d\
  • 主要介绍了详解C++编程中用数组名作函数参数的方法,是C++入门学习中的基础知识,需要的朋友可以参考下
  • 1. 数组作为函数参数,传值还是传址? 2. 函数参数中的数组元素个数能否确定? 先看下面的代码。 #include <iostream> using namespace std; void testArrayArg(int a[]) { cout << endl; ...
  • C++数组作为函数参数的注意问题 1 问题引入 从《剑指Offer》上的相关问题,下面的输出是什么? #include<iostream> using namespace std; int GetSize(int data[]) { return sizeof(data); } int main() {...
  • C++: 二维数组函数参数
  • 众所周知,函数参数中一维数组的长度会被忽略的,但二维数组的第二维度就会被要求指定长度(否则gcc会报告“数组元素的类型不完全”)。...本文就为大家总结一下C++多维数组作为函数参数的几种方式。
  • 我们一般使用函数时,函数参数大多数都是int,couble,char之类的类型,我们接下来可以看看当函数里需要用到数组时,c++是如何实现的。下面给出的例子是c++primer的例子,在此这里简化了下。 #include <...
  • golang-数组做函数参数

    千次阅读 2019-09-08 13:38:55
    2)数组作为函数参数,收到的是数组的一个拷贝,而不是它的指针 3)数组的大小是类型的一部分,[10]int和[20]int是不一样的 这里重点探索一下 2) 首先看一下C++的代码: #include <iostream> #include<map...
  • 详谈C++数组作为函数参数

    万次阅读 多人点赞 2018-04-23 15:35:56
    例子来源于《剑指Offer》,我对书上例子了修改,让其可以运行。#include&lt;iostream&gt; using namespace std; int GetSize(int data[]) { return sizeof(data); } int main() { int data1[] = {1,2,3...
  • C++中使用结构体数组作为函数参数

    千次阅读 2020-06-25 09:51:01
    在写C++的时候,当使用一个数组作为函数参数传入的时候,数组自动转化成指针变量。 int arr[] = {1,2,3}; //arr++; //这里错误 void printArr(arr[]) { arr++; //正确 } 因此在函数内部修改形参数组时,实参也会...
  • c/c++ 一维数组、二维数组作为函数参数、返回值 一、一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内的元素(太过于耗时),...
  • 1.确定大小的二维数组 void Func(int array[3][10]);  void Func(int array[][10]);  2.不确定大小的二维数组转为二维指针: 从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放)...
  • C++中如何将数组作为函数参数

    千次阅读 2019-07-21 21:03:43
    1.一维数组做函数参数 void func(int array[]) 声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[ ]这样的形式表示array是一维数组的名字,用来接收实参传...
  • 例子:将任意长度的整形数组传递给求和函数sum,返回数组中所有元素之和。 写法1: #include <iostream> using namespace std; int sum(int arr[]) { int sum = 0; int len = sizeof(arr) / sizeof(arr[0])...
  • C++数组函数参数的问题

    千次阅读 2012-11-23 16:54:57
    我们知道,给函数传递参数有三种方式,先温习一下。 按值传参: void func(int x) { x=3; } void main() { int a=0; func(a); cout; } 运行结果为输出0,可见按值传参的方式,func函数只是得到了3这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 260,560
精华内容 104,224
关键字:

c++数组做函数参数

c++ 订阅