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語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...