努力的二虎子 发表于 2021-8-3 18:51:04

一个小问题,求帮助!!

这个是C语言小甲鱼第32节的课后作业,这里是需要自己写一个bogo_sort的函数,然后在课后答案里面bogo_sort函数是定义为void的,但是这里数组array作为实参传递到了函数里面,为什么函数运行结束以后,数组array里面的值就改变了呢?这里并没有任何的返回值,为什么数组array不是输出原来的值呢?

int main(void)
{
      int array[] = {73, 108, 111, 118, 101, 70, 105, 104, 67};
      int i, length;
      time_t begin, end;

      begin = time(NULL);

      length = sizeof(array) / sizeof(array);
      bogo_sort(array, length);

      printf("排序后的结果是:");
      for (i = 0; i < length; i++)
      {
                printf("%d ", array);
      }
      putchar('\n');

      end = time(NULL);
      printf("总共耗时:%ld秒\n", end - begin);

      return 0;
}

大马强 发表于 2021-8-3 19:04:48

数组作为参数传递到函数中时,是将其地址传进去,所以修改的时候是直接找到其地址直接修改

大马强 发表于 2021-8-3 19:10:34

像其他类型的数据通过取址符也可以实现
https://static01.imgkr.com/temp/f4e348665c4f4744a5fb18b433b5bf7f.jpg

努力的二虎子 发表于 2021-8-3 19:52:37

大马强 发表于 2021-8-3 19:04
数组作为参数传递到函数中时,是将其地址传进去,所以修改的时候是直接找到其地址直接修改

好的,明白了,感谢
页: [1]
查看完整版本: 一个小问题,求帮助!!