# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C >  استفاده از & به جای * واسه فراخوانی با ارجاع

## Developer Programmer

سلام
مثلا خواستیم جستجوی خطی رو به زبان C پیاده کنیم !. کامپایلر کلید کرده که & اشتباهه. من هم نمی دونم به چی اش گیر داده!

#include <stdio.h>
#include <conio.h>
/**************************************************  **/
void seq2( const int *,
	   const int  ,
	   const int  ,
	   int * );

void seq1( const int *,
	   const int  ,
	   const int  ,
	   int & );
/**************************************************  **/

int main(int argc, char* argv[])
{
 int a[4]={0,1,2,3};
 int loc ;

 seq2 ( a, 4, 2, &loc );
 printf("%d",loc);

 seq1 ( a, 4, 2, loc);
 printf("%d",loc);

 getch();
 return 0;
}
/**************************************************  **/

void seq2( const int *arr, //call by value
           const int size, //call by value
           const int key,  //call by value
                 int *loc) //call by refrence
{
 int i;
 *loc= -1;
 for (i=0; (i< size); i++)  if (arr[i] == key)  *loc = i;
}
/**************************************************  **/

void seq1( const int *arr, //call by value
           const int size, //call by value
           const int key,  //call by value
                 int &loc)      //call by refrence
{
 int i;
 loc= -1;
 for (i=0; (i< size); i++) if (arr[i] == key) loc = i;
}

/**************************************************  **/

----------


## alireza643

من کد شما رو روی سیستم خودم کامپایل کردم که فقط به آرگومان های main گیر داد وقتی اونارو برداشتم راحت کامپایل کرد به & هم اصلاً گیر نداد مشکل فکر کنم سیستم شما باشه

----------


## armin390

من از vC++‎6 استفاده کردم و جواب داد نتیجه هر دو تابع seq هم 2 بود

----------


## C++‎Lover

من هم کد شما را با vC++‎2005 کامپایل و اجرا کردم و درست کار کرد نتیجه هر دو تابع seq هم 2 بود

----------


## Developer Programmer

از همه دوستان و سروران گرامی تشکر میکنم
دیگه مطمئن شدم که کد رو درست نوشتم  ... هرچند که  نمی دونم چرا VC و BC کلید کردن که & نباید باشه!
یکبار دیگه تشکر میکنم

----------


## seyedof

سلام
دلیلش واضحه. احتمالا شما این رو به عنوان کد سی ک‍مپایل میکنید که خطا میده. سی با سی پلاس پلاس یک سری قواعدش فرق میکنه. در سی ما call by reference نداریم و این از خواص C++‎ است. اگر شما همچین کدی رو در مود c کمپایل کنید باید هم خطا بگیره.
ممنون علی

----------


## C++‎Lover

کاملا درسته در C ما call by reference نداریم. گمون کنم مشکلتون همینه.
 :تشویق:

----------


## hamhik

با سلام.
شکل کلی دستور printfبه این صورت است.
printf("%d,%f,%c,%s",esme moteghayer)
 %d=motefghayero az noe int tarif kardin va % f=moteghayer ra az noe float tarif kardin va %c=moteghayero az no char tarif kardin va %s moteghayero az noe string tarif kardin 
be onvane mesal 
int a
printf("%d",a)
ke meghdare moteghayere a ra dar %d mirizad va chapesh mikonad

----------


## Reza_K

پسوند فایل را از C به CPP تغییر بدید و مجددا کامایل کنید.

----------


## Developer Programmer

ممنون از همه دوستان و سروران گرامی

----------

