Я не знаю, что вы хотите сделать с функцией sqlite. Но использование указателей заставляет вас сохранять изменения в функциях.
Когда вы передаете переменную в функцию, она будет продублирована.
например
int var1=0;
in *ptr1=&var1;
func(var1, ptr1);
значение var1 = 5
адрес var1 = 0xff2200 (что-то в этом роде)
значение ptr1 = 0xff2200 (адрес var1)
адрес ptr1 = 0xff0022 (что-то другое)
Давайте напишем функцию, которая использует эти две переменные как arg
void func1(int x, int *p){
x+=5;
(*p)-=5;
}
после использования этой функции;
func(var1, ptr1);
var1 не будет равно 0 !!! Это будет -5
Потому что;
в функции func1
значение x = 0 (значение var1)
адрес x = 0xaabbcc (что-то отличное от var1 !!!, поэтому x + = 5 не действует на var1. Это происходит в другой части памяти! Когда вы вернетесь, эта память снова будет свободна. И вы потеряю твои изменения ...)
адрес p = 0xcccccc (тоже что-то другое)
значение p = 0xff2200 (значение ptr1 и адрес var1! Эта операция будет выполнена по адресу var1, поэтому вы не потеряете свои изменения)
Если мы должны сохранить наши изменения переменных в функциях, мы должны использовать указатели для этих переменных.
Если у нашей переменной есть адрес, значит; это указатель. И если мы хотим сохранить изменения указателя в функциях, то мы должны использовать указатель на указатель.
Это мое первое сообщение, и я надеюсь, что это будет полезно ...
И «передача по ссылке» означает «передача по указателю», другие языки не используют указатели. так что иногда приходится передавать по ссылке. Но в C указатели будут делать свое дело ...