C语言 通过引用传递数组的两种不同方式.哪个更正确



我知道通过引用将数组传递给修改数组的函数的两种方法。我只是想知道,如果我有大数组,哪种方法更准确或更快?

第一个例子:

这里我直接传递数组并在函数中操作它。

#include <stdlib.h>
#include <stdio.h>
void changeArray(int* vec, int sizeArray)
{
     for(int i=0; i<sizeArray; i++)
     {
          vec[i] = vec[i] + 1000;
     }
}
int main()
{
     int n = 10;
     int*vec = NULL;
     vec = (int*)malloc(sizeof(int)*n);
     printf("Beforen");
     for(int i=0; i<n; i++)
     {
          vec[i] = i+1;
          printf("%d ", vec[i]);
     }
     changeArray(vec,n);
     printf("nAftern");
     for(int i=0; i<n; i++)
     {
          printf("%d ", vec[i]);
     }
     printf("n");
free(vec);
return 0;
}

秒的例子:

在这个例子中,我传递了数组的地址。我在这里发送一个指向函数的指针吗?changeArray()函数看起来更复杂。这只是为了得到同样的结果而走了很长的一段路吗?

#include <stdlib.h>
#include <stdio.h>
void changeArray(int** vec, int sizeArray)
{
     for(int i=0; i<sizeArray; i++)
     {
          (*vec)[i] = (*vec)[i] + 1000;
     }
}
int main()
{
     int n = 10;
     int*vec = NULL;
     vec = (int*)malloc(sizeof(int)*n);
     printf("Beforen");
     for(int i=0; i<n; i++)
     {
          vec[i] = i+1;
          printf("%d -> ", vec[i]);
     }
     changeArray(&vec,n);
     printf("nAftern");
     for(int i=0; i<n; i++)
     {
          printf("%d -> ", vec[i]);
     }
     printf("n");
free(vec);
return 0;
}

我是编程新手。所以这个问题可能不太好

我只是想知道哪种方式更准确或更快,如果我有大数组?

第一种方法是最正确的,并且永远不会比第二种方法慢。

在这个例子中,我传递了数组的地址。

不,传递的是指向数组第一个元素的指针地址。

对于相同的结果,这只是很长的一段路吗?

是的,这个函数是不必要的复杂,你没有从中得到任何好处。使用第一个版本

相关内容

  • 没有找到相关文章

最新更新