【发布时间】:2017-03-20 16:19:08
【问题描述】:
我知道通过引用修改数组的函数来传递数组的两种方法。我只是想知道如果我有大型数组,哪种方式更准确或更快?
第一个例子:
这里我直接传递数组并在函数中对其进行操作。
#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("Before\n");
for(int i=0; i<n; i++)
{
vec[i] = i+1;
printf("%d ", vec[i]);
}
changeArray(vec,n);
printf("\nAfter\n");
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("Before\n");
for(int i=0; i<n; i++)
{
vec[i] = i+1;
printf("%d -> ", vec[i]);
}
changeArray(&vec,n);
printf("\nAfter\n");
for(int i=0; i<n; i++)
{
printf("%d -> ", vec[i]);
}
printf("\n");
free(vec);
return 0;
}
我是编程新手。所以也许这个问题不是一个好问题。
【问题讨论】:
标签: c arrays function reference malloc