我正在研究以下示例,以了解直接传递对象和然后传递指向它的指针之间的差异:
#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;
}
Run Code Online (Sandbox Code Playgroud)
除了第一种方法对我来说更具可读性和更容易理解之外,两者之间还有什么区别?什么时候传递指针是唯一的选择,为什么在上述情况下两者都有效?