欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機C語言程序函數定義的疑問 請教論壇師傅們 [打印本頁]

作者: SHANWAZI    時間: 2021-8-24 19:52
標題: 單片機C語言程序函數定義的疑問 請教論壇師傅們
通定義函數為:
void teset(void)//沒有返回值  沒有參數型函數
{

}

unsigned caar Teset(unsigned char Num,)//帶返回值  和帶參數型函數
{

}

今天在做實驗時突發奇想定義了一個函數:
bit Teset(此括號里面為什么不能定義unsigned cahr 變量呢???)
{
bit teset;


retuan teset;
}

而是必須為如下:
bit Teset(unsigned char *Pointerb必須用以指針類型變量來進行參數傳遞呢????不是疑問)
{
bit flag;


retuan flag;

}
下面為調用時用為:
void Teset2()
{
bit flag;

flag=Teset(&Pointerb這里必須要&上才可以正常吧之值取出來????這是什么原理?????求師傅解答,)
if(flag==1)
{
....................................省略
}
}



作者: anchor8583    時間: 2021-8-24 21:42
問題發現的不對。誰說參數不能是unsigned char?誰說一定要用*Pointerb?C語言函數的參數可以有很多種類型,只不過你遇到的例子是用指針做參數罷了。隨便挑一個函數:
void Dac1_Set_Vol(u16 vol)
{
        u16 temp;       
        if(vol>4999) vol=4999;
        temp=vol*4096.0/5000;
        DAC_SetChannel1Data(DAC_Align_12b_R,temp);
}
這是用STM32的DA產生電壓進行輸出的例子,u16就不是*Pointerb
作者: SHANWAZI    時間: 2021-8-25 02:08
anchor8583 發表于 2021-8-24 21:42
問題發現的不對。誰說參數不能是unsigned char?誰說一定要用*Pointerb?C語言函數的參數可以有很多種類型, ...

感謝您的耐心回復!是這樣的請看倒數第一二個函數定義時使用的是bit型函數其返回值為bit型!!!!而在此函數圓括號中(使用整形變量來傳遞參數時形參傳遞參數時會發生錯誤而使用指針變量時就不會)
作者: 菜鳥yc    時間: 2021-8-25 09:11
想必閣下用的是51單片機吧,我用51內核的單片機寫了如下代碼,編譯通過,運行正常。供君參考。

1.png (40.39 KB, 下載次數: 98)

1.png

作者: SHANWAZI    時間: 2021-8-25 10:09
菜鳥yc 發表于 2021-8-25 09:11
想必閣下用的是51單片機吧,我用51內核的單片機寫了如下代碼,編譯通過,運行正常。供君參考。

感謝回復  是的使用的是51c語言  感謝您的解答回去好好研究一下!冒昧問一下您的這個背景可以共享不!挺好看的!
作者: 菜鳥yc    時間: 2021-8-25 11:48
SHANWAZI 發表于 2021-8-25 10:09
感謝回復  是的使用的是51c語言  感謝您的解答回去好好研究一下!冒昧問一下您的這個背景可以共享不!挺 ...

你可以做如下修改測試一下。函數原型:
  1. bit Teset(unsigned cahr val)
  2. {
  3.     bit teset;


  4.     return teset;
  5. }
復制代碼

調用程序為:
  1. void Teset2()
  2. {
  3.     if(Teset(看自己需要填個實參))
  4.     {
  5.         ....................................省略
  6.     }
  7. }
復制代碼


作者: 菜鳥yc    時間: 2021-8-25 11:53
SHANWAZI 發表于 2021-8-25 10:09
感謝回復  是的使用的是51c語言  感謝您的解答回去好好研究一下!冒昧問一下您的這個背景可以共享不!挺 ...

本站也有類似的背景色設置,http://m.raoushi.com/bbs/dpj-188186-1.html
CSDN等都有的,你可以網上搜索下,自己“替換”一下
我的是根據自己的喜好自己在軟件“設置”的,如果你需要的話,我可以給你分享我的“設置”截圖
作者: SHANWAZI    時間: 2021-8-25 20:09
菜鳥yc 發表于 2021-8-25 11:48
你可以做如下修改測試一下。函數原型:

調用程序為:

非常感謝  您上述中我已經做實驗函數原型括號內帶字節型參數在進行傳遞數據時就會出錯我是這樣的如下:

bit Teset(unsigned char Value/*字節形參*/)
{
bit TesetFlag;

//對Value進行處理省略。。。。。。。。。。。
//處理完畢標志位置位
TesetFlag=1;

return TesetFlag;//返回標志位
}

//以下為主函數調用上面函數時的如下:
void main()
{
bit TesetFlag111;
unsigned char  Value111=100;

while(1)
{
TesetFlag111=Teset(unsigned char Value111/*字節實參*/);
if(TesetFlag111==1)
{
//處理別的省略
}
}
}

1:問題就是在這里實參給形參傳遞參數時實參的實際值沒有完全傳遞給形參 而發生了改變這是我一直困惑的
2:使用字節型函數如:
unsigned char Teset(unsigned char Value)
{

}
進行參數進行傳遞就形參與實參參數傳遞時不會發生改變!!!!!!!!!!
作者: lkc8210    時間: 2021-8-25 21:30
SHANWAZI 發表于 2021-8-25 20:09
非常感謝  您上述中我已經做實驗函數原型括號內帶字節型參數在進行傳遞數據時就會出錯我是這樣的如下:
...

用的時候是這樣寫的! 老弟!  !  !  !  !  !  !  !  !  !  !  !  !
TesetFlag111=Teset(Value111/*字節實參*/);
作者: SHANWAZI    時間: 2021-8-25 23:35
lkc8210 發表于 2021-8-25 21:30
用的時候是這樣寫的! 老弟!  !  !  !  !  !  !  !  !  !  !  !  !
TesetFlag111=Teset(V ...

不好意思  手機打字不太方便打錯了
作者: 188610329    時間: 2021-8-28 18:26
看你發的代碼,里面錯誤好多,就講講關鍵的吧。
首先:
bit test_bit_return(unsigned char dat)
{
      bit   testbit;

}
作者: 188610329    時間: 2021-8-28 18:35
看了你發的內容,實在是……,覺得還是用具體的代碼跟你講吧。
首先,聲明位變量。
bit        testflag1,testflag2;

再定義返回位的子函數,
bit        test_bit_return(unsigned char dat)
{
        bit flag;
        if(dat == 0x00)        flag = 1;
        else        flag = 0;
        return        flag;
}
最后在main函數中用以下調用。
testflag1 = test_bit_return(0x00);
testflag2 = test_bit_return(0x12);

你可以得到 testflag1 = 1  , testflag2 = 0,  





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1