回 帖 发 新 帖 刷新版面

主题:请教一个关于以数组为参数的调用

我今天试着做数组做为参数的函数调用,写了个例程,有些问题,请指点。
请使用不带返回值的方式解决如下程序

/*
*将a[10]中的后7位付给b[]
*/
#include<stdio.h>
void select(int m[],int n[])
{
    int k=0;
    for(;k<10-3;k++)
    {
        n[k]=m[k+3];
    }
}

int main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int b[10];

    select(a,b);
            for(int i=0;i<7;i++){
            printf("%d\n",b);
    }
    return 0;
}

和以下程序比较
#include<stdio.h>
void add(int m,int n,int k)
{
    k=m+n;
}

int main ()
{
    int a=3;
    int b=4;
    int c;

    add(a,b,c);
        printf("%d",c);
    return 0;
}
而下面的程序c的值被释放了,这个和上面的程序有什么区别?是不是因为一个是变量,而一个是地址的原因啊?

回复列表 (共3个回复)

沙发

是的,数组a的“a”是一个存着数组首地址的值,而变量c的“c”只是它的内容。
而c函数传参都是以“传值”方式运作的。

板凳


那比如说,下面的加法程序,我想使用不返回值的调用,我改如何修改才能完成这样的功能呢?

3 楼

[code=c]
void add(int m,int n,int &k)
{
    k=m+n;
}
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册