指標作為函式的出入引數例子說明

2021-08-17 16:43:33 字數 2661 閱讀 6776

1 第一種: 引數是入參也是出參 函式裡面的*pmon 是指標指向的值;

//得到指定月份的上乙個月份;

void get_prev_month(int32 *pyear, int32 *pmon)

if ( *pmon == 1 )

*pyear -= 1;

*pmon = 12;

else

*pmon -= 1;

2 //字串轉換成字元陣列

//輸入 src指標 ,輸出 des指標,函式的作用是改變des指標指向的位置的值

void str2byte(char *src, uint8 *des, int32 length) //jlb 如果輸出引數是乙個* ,則des[i]

int32 i;

char tmp[3];

memset(tmp, 0, sizeof(tmp));

for(i = 0; i < length; i++)

tmp[0] = src[i * 2];

tmp[1] = src[i * 2 + 1];

des[i]= strtol(tmp, null, 16);

3 char *write_buf=malloc(16);

// 輸入 t_sys_time;輸出 write_buf陣列

encodeframbuf(t_sys_time,&write_buf);

void encodeframbuf(rtc_time sys_time,char **writebuf)

//jlb 如果輸出引數是兩個* ,則(*writebuf)[0]

(*writebuf)[0]=((sys_time.tm_year) / 100);

(*writebuf)[1] = ((sys_time.tm_year ) % 100);

(*writebuf)[2] = (sys_time.tm_mon );

(*writebuf)[3] = (sys_time.tm_mday);

(*writebuf)[4] = (sys_time.tm_hour);

(*writebuf)[5] = (sys_time.tm_min);

(*writebuf)[6] = (sys_time.tm_sec);

4 char *write_buf=malloc(16);

// 輸入 t_sys_time;輸出 write_buf陣列

encodeframbuf(t_sys_time,write_buf);

void encodeframbuf(rtc_time sys_time,char *writebuf)

//jlb 如果輸出引數是1個* ,則writebuf[0]

writebuf[0]=((sys_time.tm_year) / 100);

writebuf[1] = ((sys_time.tm_year ) % 100);

writebuf[2] = (sys_time.tm_mon );

writebuf[3] = (sys_time.tm_mday);

writebuf[4] = (sys_time.tm_hour);

writebuf[5] = (sys_time.tm_min);

writebuf[6] = (sys_time.tm_sec);

5 重重之重的

unsigned char * buff_p;

pyldlen=prime_recv(&remotellcaddr, &remotesap, &srcsap,&buff_p);

//經過上面prime_recv函式之後,可以將buff_p的值列印出來,

for(i=0;i < pyldlen;i++)

int prime_recv(int * premotellcaddr, int * premotesap, int * psrcsap, unsigned char**ppyldbuff_p)

int nret = 0;

// get mac address by serial number

nret = g_tvar.nrxbuflen;

*ppyldbuff_p = g_tvar.rxbuf;// g_tvar.rxbuf是st封裝的物理層讀取的buf,所以這裡用指標最好。 ppyldbuff_p是二重指標,*ppyldbuff_p是減去一層指標

g_tvar.nrxbuflen = 0;

*premotellcaddr = g_tvar.rxsa;// premotellcaddr是一重指標,*premotellcaddr是取裡面的內容 下面兩個相同

*premotesap = g_tvar.rxssap;

*psrcsap = g_tvar.rxdsap;

return nret;

6 備註:出參是乙個*的

輸出乙個位元組的話,比如例子5的:*premotesap = g_tvar.rxssap;

輸出多個位元組的話:比如例子 4的 writebuf[0]、writebuf[1]、。。。。。。。。

函式指標例子說明

在c c 中存在著函式指標,即指向函式的指標。我目前已知的兩種使用方法是 cpp view plain copy include include typedef int pinnt define pp int intfunca inta,intb intfuncb int a,int b intma...

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...