我正在尝试使用数组指针作为函数参数来生成一个数组。
void generateArray(int *a[], int *si){
srand(time(0));
for (int j=0;j<*si;j++)
*a[j]=(0+rand()%9);
} //end generateArray;
int main() {
const int size=5;
int a[size];
generateArray(&a, &size);
return 0;
} //end main
但当我编译它时,会出现以下消息:
cannot convert `int (*)[5]' to `int**' for argument `1' to `void generateArray(int**, int*)'
generateArray(a, sizeof(a)/sizeof(a[0]))
。这种写法比较啰嗦,但在处理数组时是标准最佳实践。 - djechlinstd::vector
жҲ–std::array
пјҡе®ғ们еңЁдј йҖ’еҲ°еҮҪж•°ж—¶д»Қ然зҹҘйҒ“иҮӘе·ұзҡ„еӨ§е°ҸгҖӮ - moooeeeepstd::vector<int>&
或std::array<int>&
(或更可能的是,将generateArray
定义为模板函数并使用T&
作为参数类型); 如果您直接从int a[]
转换为std::array<int, 5>
(或与std::array<int, 5>
一起使用的模板化的T
),则会通过值传递(复制您不想复制的内容,对副本进行操作,并使main
中的a
保持不变)。 - ShadowRanger