我正在以以下内容作为示例,以了解直接传递对象和传递指向该对象的指针之间的差异:
#include "stdio.h"
// Car object
typedef struct Car {
char* name;
unsigned int price;
} Car;
void print_car(Car car) {
printf("<Car: %s, Price: $%d>", car.name, car.price);
};
void print_car2(Car *car) {
printf("<Car: %s, Price: $%d>", car->name, car->price);
};
int main(int argc, char* argv[]) {
Car chevy = {chevy.name = "Chevy", chevy.price = 45000};
print_car(chevy);
Car mazda = {chevy.name = "Mazda", chevy.price = 30000};
print_car2(&mazda);
return 1;
}
除了第一种方法对我来说更易读和理解之外,它们两者之间有什么区别?什么情况下传递指针将是唯一的选择,为什么在上述情况下两种方法都可以工作?
&
语法获取对象的地址并使用*
解除指针。C++ 可以在调用站点不使用&
和*
语法的情况下完成此操作,从而减少了语法混乱。 - Blastfurnace