老牛来学习 发表于 2020-2-29 21:46:21

C语言传参问题

//以下程序中被调函数返回值为空,那么不是应该不返回数组b的值给主调函数吗,为什么可以运行,下面代码中是如何传参数的?
#include<stdio.h>

void main()
{
    void mm();
    int a,i;
    for(i = 0;i < 12;i++)
    {
      scanf("%d",&a);
    }
    mm(a);
    for(i = 0;i < 10;i++)
    {
      printf("%d",a);
    }
}

void mm(int b[])
{
    int max,max_i,i;
    max = b,max_i = 0;
    for(i = 1;i < 10;i++)
    {
      if(max<b)
      {
            max = b;max_i = i;
      }
    }
    max = b;
    b = b;
    b=max;
    return;
}

4goodworld 发表于 2020-2-29 22:44:14


有结果的,
为了便于测试,稍微把你main函数的内容修整了下,框架没有改动

major_lyu 发表于 2020-2-29 23:16:06

本帖最后由 major_lyu 于 2020-2-29 23:18 编辑

你定义的mm(int b[])传递进去的是一个数组的首地址,即内存地址。当调用函数mm(a)时, 函数mm中的数组b的存储空间和数组a是一样的,这样函数中数组b的元素b和main函数中数组元素a是存储在同一个内存单元上的,对b的操作就相当于对a进行了操作啊。

chxchxkkk 发表于 2020-2-29 23:17:28

因为数组传参传的是指针。
页: [1]
查看完整版本: C语言传参问题