C++ 结构体不能被用做引用参数么
时间: 2023-10-11 16:08:43 浏览: 43
结构体可以作为引用参数传递,可以通过指针来实现结构体的引用传递。例如:
```
#include <stdio.h>
struct student {
char name[20];
int age;
};
void changeAge(struct student *s) {
s->age = 20;
}
int main() {
struct student s1 = {"Jack", 18};
printf("Before change: %s is %d years old.\n", s1.name, s1.age);
changeAge(&s1);
printf("After change: %s is %d years old.\n", s1.name, s1.age);
return 0;
}
```
输出结果为:
```
Before change: Jack is 18 years old.
After change: Jack is 20 years old.
```
在函数中使用指针来引用结构体,可以修改结构体中的成员变量的值。
相关问题
c++ 结构体数组作为函数参数
C++中,结构体数组可以作为函数参数传递给函数。结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。结构体数组是由多个结构体元素组成的数组。
要将结构体数组作为函数参数传递,可以使用以下两种方式:
1. 传递指针:将结构体数组的首地址作为参数传递给函数。函数内部可以通过指针来访问和修改结构体数组的元素。
示例代码如下:
```cpp
struct Student {
int id;
string name;
int age;
};
void printStudents(Student* arr, int size) {
for (int i = 0; i < size; i++) {
cout << "ID: " << arr[i].id << endl;
cout << "Name: " << arr[i].name << endl;
cout << "Age: " << arr[i].age << endl;
}
}
int main() {
Student students[3] = {
{1, "Alice", 18},
{2, "Bob", 19},
{3, "Charlie", 20}
};
printStudents(students, 3);
return 0;
}
```
2. 使用引用:将结构体数组作为引用参数传递给函数。通过引用可以直接操作原始的结构体数组,而无需通过指针间接访问。
示例代码如下:
```cpp
struct Student {
int id;
string name;
int age;
};
void printStudents(Student (&arr)[3]) {
for (int i = 0; i < 3; i++) {
cout << "ID: " << arr[i].id << endl;
cout << "Name: " << arr[i].name << endl;
cout << "Age: " << arr[i].age << endl;
}
}
int main() {
Student students[3] = {
{1, "Alice", 18},
{2, "Bob", 19},
{3, "Charlie", 20}
};
printStudents(students);
return 0;
}
```
C++可不可以传递结构体成员的引用
可以传递结构体成员的引用。假设有一个名为`Person`的结构体,其中包含两个成员变量`name`和`age`,代码如下:
```
#include <string>
struct Person {
std::string name;
int age;
};
```
如果要在函数中修改`Person`对象的`age`成员变量,可以将该成员变量的引用作为函数参数,如下所示:
```
void set_age(int& age_ref) {
age_ref = 30;
}
int main() {
Person p;
p.name = "Alice";
p.age = 25;
set_age(p.age);
return 0;
}
```
在上面的例子中,我们定义了一个函数`set_age()`,它接受一个`int&`类型的参数`age_ref`,表示要修改的`age`成员变量的引用。在`main()`函数中,我们创建了一个`Person`对象`p`,并将其`age`成员变量的引用传递给`set_age()`函数。在`set_age()`函数中,我们将`age_ref`赋值为30,这将同时修改`p`对象的`age`成员变量。最终,`p.age`的值将变为30。