0x00 函数传递值的三种方式
值传递、地址传递、引用传递
0x01 代码
/* 通过解析mysql 的查询函数,来理解函数传递方式
const char *query 地址传递
unsigned long length
*/
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
{
/*
unsigned long length; 值传递,形参有开辟了一块内存空间
修改不会影响到传递的实参
MYSQL *mysql; 地址传递,修改会影响实参
*/
}
class Animal
{
public:
Animal()
{
}
private:
std::string name;
};
/*引用传递
//注意的是,引用有使用场景
*/
void CreateAnimal(vector<Animal*>& zoo)
{
Animal dog;
Animal cat;
zoo.push_back(&cat);
zoo.push_back(&dog);
}
int main()
{
MYSQL connectHandle;
mysql_init(&connectHandle);
char* querySentence = "SELECT count(*) FROM db.student";//常量字符串
auto iRes = mysql_real_query(&connectHandle, querySentence, strlen(querySentence));
//引用传递
vector<Animal*> zoo;
CreateAnimal(zoo)
return 0;
}
根据业务需求选择具体的传递方式