外贸网

  • 首页
  • 请问C++中,用数组作为函数形参和用指针作为函数形参,有什么不同? 请问在C++中,对象数组可不可以作为函数参数来传递呢?如果要...

    作者:媒体   更新日期:2024.05.19
    还是有差别的 虽然大多数时候都可以相互用
    最大的差别就是指针可以改变,可以通过指针改变指向内容的值,但数组名不行
    举个例子:(分别作为形参)
    int num[10], *p;
    p = num;//此时p指向数组的第一个元素
    我在主函数里调用两个函数
    1 Sum(num);
    2 Sum(p+2,10);
    这就有区别了,因为num数组首地址它不能变化,但是此时p指向了数组的第三个元素,而且后面的那个10也是可以改变的,所以说用指针作为形参的时候要带一个int n 表示你要处理的数的个数,所以说用指针作为形参的话会给你一种假象,它的确是指向的数组的某个元素(这要看你的指针移动了,比如说p+2等等,数组名不能移动),但是它仅仅只是一个指针,你可以在调用的函数里用sizeof(num),sizeof(p)求它们的值,就知道为什么总是要加上一个int n了,因为如果不加的话函数就不知道你要操作的数的个数,另外别忘了传递数组和传递一般的int,double等类型是不一样的,传递数组传递的是原数组,函数的操作就改变了原来的数组,而传递一般的数只是传递它的拷贝,对原来的数没有影响;
    还有什么不懂的继续交流~~~

    请问在C++中,对象数组可不可以作为函数参数来传递呢?如果要用指针,该怎么使用呢?

    可以,形参为对象指针,实参可以直接传递数组的名字。
    记得带一个数组个数的参数。

    假定函数定义为
    void
    fun(int
    *b)或void
    fun(int
    b[])
    比如:
    int
    a[10]
    可以这样传进去:
    fun(a)

    关于c语言中数组作为函数参数的函数之间调用问题
    答:1、新建一个数组作为参数项目,如图所示:2、添加一个array.c文件,如图所示:3、包含stdio.h和stdlib.h头文件,如图所示:4、输入main函数主体及返回值,如图所示:5、定义一个数组arr,如图所示:6、定义一个function函数,如图所示:7、将数组作为参数传递给function函数,如图所示:8、运行程序,输出...

    C语言中数组名作为实参传给被调用的函数时,形参获得的是什么
    答:C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。还是用例子说话吧。include<stdio.h> int *arry(int *a){ int *b;b = a;int i;for(i=0;i<5;i++){ printf("%d",a[i]);} return b;} int main(){ int a[5] = {1,2,3,4,5};int *c;int i;c...

    在C语言中,数组作为参数,是怎样在函数之间传递的啊??
    答:数组作为参数是按地址传递的 数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。

    C语言选择题:当数组名作为函数参数时,传递给被调函数的是?
    答:这个选择题的答案是C,即当数组名作为函数参数时,传递给被调函数的是数组的第一个元素(下标为0)的地址。

    若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)
    答:若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。比如定义了一个数组变量,编译器就会在内存中划分了一块地址空间给它,数组名这个指针常量就指向了这块内存空间的首地址,而数组首...

    c语言c++语言如何用二维数组做形参?
    答:C/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下://#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"void myprint(int (*p)[5]){...

    c语言怎么将数组作为函数参数传入?
    答:修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。include<stdio.h> //数组作为函数参数,可以省略元素个数 //数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组 void change(int array[]){ printf("array ==%p\n",array);array[0] = ...

    C语言中,数组作为参数,怎样在函数之间传递的?
    答:很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看 include<stdio.h> define N 3 int array[N][N];void main(){ //在主函数内声明被调函数 void convert(int array[][3]);int i,j;printf("输入数组:\n");for(j=0;j<N;j++)f...

    C++指针、数组、引用、变量作函数参数的问题
    答:2. 指针、数组作为参数,这是地址传递,指针和数组可以看成是指向一个或一片连续空间的指针(区别是:一个为变量地址,一个常量地址),它们传递的是所指数据或数据区的地址,这使得函数直接操作的就是原数据区的数据。好处是可以直接通过函数改变调用函数中的多个数据。如有函数声明:void swap(int *a...

    C语言中,数组名作为函数参数,属于什么传递,为什么?
    答:C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储...