c++怎么在函数外定义一个空数组在函数内赋值
时间: 2024-05-12 10:17:30 浏览: 10
你可以在函数外定义一个空数组,并将其作为参数传递给函数。例如:
```c
#include <stdio.h>
void fillArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] = i * 2;
}
}
int main() {
int myArray[10] = {};
fillArray(myArray, 10);
for (int i = 0; i < 10; i++) {
printf("%d ", myArray[i]);
}
return 0;
}
```
这个程序会打印出:0 2 4 6 8 10 12 14 16 18
相关问题
c++在类中定义一个成员数组然后通过构造函数从外界赋值为什么不行
C++中定义一个成员数组并通过构造函数从外界赋值是可以的,但是需要注意以下几点:
1. 数组的大小必须是已知的,不能使用变量来定义数组的大小。
2. 构造函数必须使用成员初始化列表来初始化数组。
下面是一个例子:
```cpp
class MyClass {
public:
MyClass(int size) : size_(size), array_{0} {
// 构造函数使用成员初始化列表初始化数组
}
private:
int size_;
int array_[10]; // 数组大小为10,不能使用变量来定义数组大小
};
```
在构造函数的成员初始化列表中,我们可以使用花括号来初始化数组,例如`array_{0}`表示将数组所有元素初始化为0。
c++函数返回一个数组
在 C++ 中,函数可以返回一个数组,具体实现方式有多种,下面介绍两种实现方式。
方式一:返回数组指针
可以使用动态内存分配,返回指向动态分配数组的指针,代码如下:
```cpp
#include <iostream>
using namespace std;
int* func() {
int *arr = new int[5];
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
return arr;
}
int main() {
int* p = func();
for (int i = 0; i < 5; i++) {
cout << p[i] << " ";
}
cout << endl;
delete[] p;
return 0;
}
```
在上述代码中,函数 `func()` 动态分配了一个长度为 5 的整型数组,然后将数组的元素赋值为 1~5,并返回数组的指针。在 `main()` 函数中,我们调用 `func()` 函数得到数组的指针,遍历数组并输出每个元素。最后,需要在使用完数组后释放内存,避免内存泄漏。
方式二:使用结构体
可以定义一个结构体,结构体包含我们要返回的数组,然后将结构体作为函数返回值,代码如下:
```cpp
#include <iostream>
using namespace std;
struct Array {
int arr[5];
};
Array func() {
Array a;
for (int i = 0; i < 5; i++) {
a.arr[i] = i + 1;
}
return a;
}
int main() {
Array a = func();
for (int i = 0; i < 5; i++) {
cout << a.arr[i] << " ";
}
cout << endl;
return 0;
}
```
在上述代码中,我们定义了一个名为 `Array` 的结构体,该结构体包含一个长度为 5 的整型数组。函数 `func()` 创建一个 `Array` 类型的变量 `a`,然后将数组的元素赋值为 1~5,并返回该变量。在 `main()` 函数中,我们调用 `func()` 函数得到一个 `Array` 类型的变量,遍历其数组并输出每个元素。