精华内容
下载资源
问答
  • C++数组作为形参进行传递

    C++数组作为形参进行传递

    相关网址

    键盘输入字符串数组

    在这里插入图片描述
    当输入字符少于100时,字符数组后面位数出现错误,如图所示。
    使用 n = sizeof(a)时,显示n = 100,并不是你输入字符串个数。
    在这里插入图片描述
    但是输出结果仍然是正确的,如下图所示。
    在这里插入图片描述

    在这里插入图片描述
    对代码进行如下修改,即对数组赋初值,之后数组进行输入;
    在这里插入图片描述
    结果如下:
    在这里插入图片描述

    展开全文
  • C++数组作为形参传递给函数

    千次阅读 2018-03-15 20:33:26
    以下三种形式等价void function(const ...//这里维度表示期望有10个,并不代表真实为10个以上三个函数等价于将数组的头指针const int*类型传递给函数,但是不知道数组的长度。有以下方法解决。 1.使用标记指定数组长度

    以下三种形式等价

    void function(const int *arg);
    void function(const int arg[]);
    void function(const int arg[10]);//这里维度表示期望有10个,并不代表真实为10个

    以上三个函数等价于将数组的头指针const int*类型传递给函数,但是不知道数组的长度。有以下方法解决。
    1.使用标记指定数组长度
    使用一个确定的标记告诉当读取到该标记时,表示数组结束。
    2.使用标准库

    int a[] = {1,2,3,4,5};
    void function(const int *begin, const int *end){
        for(auto i = begin;i!=end;++i){
            cout<<*i<<endl;
        }
    function(begin(a),end(a));

    begin()函数返回数组a的第一个元素的地址,end()函数返回数组a最后一个元素的下一个地址。
    3.显示的传递一个表示数组大小的形参

    void function(const int a[], size_t size);
    展开全文
  • C++数组作为形参进行传递(转) 有两种传递方法,一种是function(int a[]); 另一种是function(int *a) 这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值! 对于第一种,根据之前所学,形参是实参...

    C++中数组作为形参进行传递(转)

    有两种传递方法,一种是function(int a[]); 另一种是function(int *a)

    这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值!

    对于第一种,根据之前所学,形参是实参的一份拷贝,是局部变量。但是数组是个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的地址,数据还是在内存里的,函数在需要用到后面元素时再按照这个地址和数组下标去内存查找。也就是说后面的元素根本没到函数里来。所以,这里也不能在test()函数内部用sizeof求数组的大小,必须在外面算好了再传进来。

    对于第二种,则是传址调用,无需再说。

    这里还有几点需要注意:

    1.在以上两个函数的形参前面加上const则表示整个数组只读,而不是只有首地址对应存储的数据只读。

    2.第二种形式不能用C++11中的for...auto来循环打印。

    3.数组的大小要用sizeof()来求,不能用.size(),因为.size()只有struct 或者union才能用, vector算是struct!

    4.如果在函数内部又声明一个int* tmp类型的变量,然后把p赋值给tmp, 通过tmp修改数数组也是一样,都会修改实参本身

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    
    void test1(int[], int size);
    void test2(int *p, int size);
    //void test2(const int *p, int size);
    
    
    
    int main(void){
        int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int size = sizeof(a)/sizeof(int);
        /*这里打印出的a值与test1(),test2()中的p值相等
         *即地址值相同*/
        printf("%p \n", a);
        //test1(a, size);
    
        test2(a, size);
    
        int i;
    
        printf("main: ");
    
        for(i = 0; i < size; ++i)
    
        {
    
            printf("%d ", a[i]);
    
        }
    
    }
    
      
    
    void test1(int p[], int size)
    
    {
    
        printf("%p \n", p);
    
        p[4] = 111;
    
        printf("test1: ");
    
        int i;
    
        for(i = 0; i < size; ++i)
    
        {
    
            printf("%d ", p[i]);
    
        }
    
        printf("\n");
    
    }
    
      
    
    void test2(int *p, int size)
    
    {
    
        printf("%p \n", p);
    
        *(p+4) = 222;
    
        printf("test2: ");
    
        int i;
    
        for(i = 0; i < size; ++i)
    
        {
    
            printf("%d ", *(p+i));
    
        }
    
        printf("\n");
    
    }

      

    展开全文
  • c/c++数组作为形参时会退化为指针 这几个结果会不会都是10呢? 错误 我今天遇到了,我就想不明白为什么,最后才知道 当数组做为函数的形参的时候,该参数退化为指针,并且是无法直接求得数组的大小。 传数组给一个...

    c/c++ 当数组作为形参时会退化为指针在这里插入图片描述

    这几个结果会不会都是10呢?

    错误

    在这里插入图片描述

    我今天遇到了,我就想不明白为什么,最后才知道

    当数组做为函数的形参的时候,该参数退化为指针,并且是无法直接求得数组的大小。

    传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址

    我们可以这样写

    在这里插入图片描述

    在这里插入图片描述

    也可以在外面计算出数组大小,作为形参传入函数内

    为什么用模板写法就可以求出数组的大小求大佬告知?

    展开全文
  • C++数组作为形参的方法

    千次阅读 2019-06-04 15:27:08
    有两种传递方法,一种是function(int a[]); 另一种是function(int *a) 这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值!...但是数组是个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空...
  • C++数组作为形参传递给函数时把数组视为指针,并没有将数组的长度信息传递给函数,因而在函数中稍有不慎就会造成数组内存的越界访问。为了避免这个问题,下面根据书上给的内容做了一点总结和说明。 数组形参的定义...
  • //例子说明数组形参时,实际上是用一个临时指针变量做形参,指向传进去的数组首地址。实际的数组是常指针,不能改变它的值。 #include using namespace std; int f(int *a,int *b); int main
  • c++二维数组作为形参传递参数

    千次阅读 2018-07-20 21:56:37
    在写代码时,有时涉及到二维数组形参传递,这个问题很小,但是当解决不好时可能会导致程序编写的复杂程度。因此有必要在这里重说一下: 1.《C++ Primer》中给出的方法: void func1(int iArray[][10]) { } ...
  • C++ 数组作为函数形参

    2019-12-05 15:10:49
    代码行都有注释,就不多说了,有错误欢迎指正~ #include<...// 一维数组方式1 void fun1(int a[], int m) { for(int i=0;i<m;i++) cout<<a[i]<<endl; } // 一维数组方式2 void fun2(in...
  • C++数组形参

    2018-01-03 09:38:24
    数组作为形参有两种形式: 引用 非引用 非引用方式 常用方式为非引用,将形参定义为数组元素类型的指针 void func(int* p); void func(int p[]); void func(int p[10]); 非引用方式时,即使在形参中显示...
  • 在线代码编辑器: http://codepad.org/ 1、*指针 1 void display(int *arr, const int row, const int col) 2 { 3 for(int i=0; i < row ; ++i) 4 { 5 for(int j=0; j <... 6...
  • 如何将二维数组作为函数的参数传递 今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维...
  • 在函数中以数组作为形参的方法

    千次阅读 2016-07-28 15:02:36
    本文介绍了三种在函数中以数组作为形参时的处理方法,重点介绍C++11标准是如何管理数组大小的。 数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别是: 不允许拷贝数组以及使用数组时...
  • 1.#include <iostream> using namespace std; //交换两个值 void swap(int &a, int &b) { int temp = 0;...//把数组中元素为奇数的放左边,偶数放有右边。//此处引发了我对C++ ...
  • 在项目过程中,因为涉及到用c#调用c++的dll,其中有一个定义好的数组,想转为c++中的vector,将数组作为形参传到函数内部后,需要遍历每个数组
  • C++二维数组形参

    千次阅读 2012-11-21 12:42:43
    二位数组作为形参,目前仅知道两种形式,一种直接采用二维数组,一种是用二维指针。以下是做的一个简单的实例。 大家帮我看看,在实际应用中两者有和优缺点。当然,有更好的方式更好了。 以下均应用在字符串数组中...
  • 2.c++形参传入数组指针时,需要传入数组的长度 #include <iostream> using namespace std; int* getSortedArray(int *array,int length);//函数声明,排序后返回数组 bool sortedOK(int *array,int length);//...
  • 最近写了一个函数,把数组作为了它的参数,在这个函数中用到了这个数组的长度,按照正常的求长度的方式,应该不会出错;但是运行之后发现结果却不是我想要的。于是写了一个测试程序来验证我的猜想,验证数组做函数...
  • c++ 数组作为参数、返回值

    千次阅读 2020-06-27 10:32:37
    C++代码遇到数组作为参数,常常忘记怎么写形参,这里记录一下。 一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内的元素...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389
精华内容 155
关键字:

c++数组作为形参

c++ 订阅