先看看mysql_init函數的官方定義:
25.2.3.35. mysql_init()
MYSQL *mysql_init(MYSQL *mysql)
描述
分配或初始化與mysql_real_connect()相適應的MYSQL對象。如果mysql是NULL指針,該函數將分配、初始化、並返回新對象。否則,將初始化對象,並返回對象的地址。如果mysql_init()分配了新的對象,當調用mysql_close()來關閉連接時。將釋放該對象。
返回值
初始化的MYSQL*句柄。如果無足夠內存以分配新的對象,返回NULL。
錯誤
在內存不足的情況下,返回NULL。(來自:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#mysql-init)
正確使用方法:
MYSQL mysql;
mysql_init(&mysql);
錯誤使用方法:
MYSQL *mysql;
mysql_init(mysql);
其錯誤的原因類似於:
#include<stdio.h>
void fun1(int *a) {
a = (int*) malloc(sizeof(int));
*a = 9;
}
int main() {
int *B = 0;
fun1(B);
printf("B=%d\n", *B); //B的值並未改變
return 0;
}
