18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言函數(shù)不改變形參內(nèi)容的說明

聚豐開發(fā) ? 2018-10-29 11:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

注:本文是作者以前發(fā)表在其個(gè)人博客,現(xiàn)在發(fā)布到“聚豐開發(fā)”專欄


這也是面試時(shí)常碰到的題,通常是把一個(gè)指針作為函數(shù)的輸入?yún)?shù),在函數(shù)內(nèi)部會(huì)改變輸入?yún)?shù)對(duì)應(yīng)的指針,問面試者在函數(shù)調(diào)用過程中指針的具體內(nèi)容。


這里我也設(shè)計(jì)一個(gè)這樣的函數(shù),功能是對(duì)輸入?yún)?shù)指定的地址連續(xù)寫入指定個(gè)數(shù)的指定內(nèi)容。問在位置(1)(2)(3)指針p的值,在位置(4)(5)指針 buf的值。



答案是:


位置(1)指針p還沒賦值為空指針0
位置(2)(3)指針p的值均為&data_buf[0]
位置(4)針buf值為&data_buf[0]
位置(5)指針buf值為&data_buf[100]

void fill_buffer(unsigned char* buf,unsigned char data,unsigned char size)
{ //位置(4)
unsigned char i;
for(i=0;i {
*buf=data;
buf++;
}
}//位置(5)

void main(void)
{
unsigned char data_buf[256];
unsigned char *p;
p=(char*)data_buf; //位置(1)
fill_buffer(p,0,100); //位置(2)
while(1); //位置(3)
}


可能有的人會(huì)疑惑,明明指針p作為函數(shù)的參數(shù),在函數(shù)中有進(jìn)行遞增操作,為什么函數(shù)返回后在位置三還是保持內(nèi)容為&data_buf[0]不變?


有這種想法的人理解的邏輯流程如下,看上去也好像有道理。


void main(void)
{
unsigned char data_buf[256];
unsigned char *p;
p=(char*)data_buf;
fill_buffer(p,0,100); p在這里是輸入?yún)?shù)
//unsigned char i;
//for(i=0;i //{
// *p=data;
// p++; 執(zhí)行到這里不就是改變了p嗎?
//}
while(1); 函數(shù)返回p應(yīng)該也改變了
}


這種理解自然不對(duì),對(duì)于函數(shù)的參數(shù),不能簡(jiǎn)單的在函數(shù)中進(jìn)行替代理解,以這里的fill_buffer(p,0,100)為例子,函數(shù)中并不會(huì)對(duì)p進(jìn)行任何處理,而是先將p的值用一個(gè)臨時(shí)變量保存起來(lái)(也可以為寄存器),在函數(shù)中使用的是這個(gè)臨時(shí)變量。


如果用匯編來(lái)表示 fill_buffer(p,0,100)的調(diào)用過程,參考流程如下:


;lda x 為把x裝到A中
;sta x 為把A的內(nèi)容存到裝x中
;得到第一個(gè)參數(shù)
lda p
sta buf_para
;得到第二個(gè)參數(shù)
lda #0
sta data_para
;得到第三個(gè)參數(shù)
lda #100
sta size_para
;跳轉(zhuǎn)到具體函數(shù)代碼位置
jsr fill_buffer



從這個(gè)流程可以看出指針p實(shí)際上沒有被改寫,雖然p所指的位置會(huì)被函數(shù)寫入指定的內(nèi)容,函數(shù)只是從p得到一個(gè)起始地址,在函數(shù)內(nèi)部是通過另外一個(gè)指針來(lái)改寫這個(gè)地址開始位置的內(nèi)容,在調(diào)試中觀察到的寫指針是另外那個(gè)指針,并不是p。這也是C函數(shù)指針可以做輸入輸出參數(shù),而變量只能做輸入?yún)?shù)的原因。


如func(char *p,char data),函數(shù)可以讀p所指的地址內(nèi)容,也可以向p所指的地址寫入指定內(nèi)容,但data只能供函數(shù)使用,不能將函數(shù)中的值反存到data中。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言編程
    +關(guān)注

    關(guān)注

    6

    文章

    90

    瀏覽量

    21901
  • 面試題
    +關(guān)注

    關(guān)注

    1

    文章

    12

    瀏覽量

    8133
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    變形監(jiān)測(cè)包含哪些內(nèi)容?變形監(jiān)測(cè)的重要性

    變形監(jiān)測(cè)包含哪些內(nèi)容?變形監(jiān)測(cè)的核心在于持續(xù)獲取工程結(jié)構(gòu)關(guān)鍵部位在空間位置(位移、沉降、傾斜)和內(nèi)部狀態(tài)(應(yīng)變、裂縫)上的變化信息。下面就讓南京峟思給大家具體的介紹變形監(jiān)測(cè)的相關(guān)
    的頭像 發(fā)表于 08-27 11:27 ?253次閱讀
    <b class='flag-5'>變形</b>監(jiān)測(cè)包含哪些<b class='flag-5'>內(nèi)容</b>?<b class='flag-5'>變形</b>監(jiān)測(cè)的重要性

    C語(yǔ)言中的內(nèi)聯(lián)函數(shù)與宏

    C編程中,內(nèi)聯(lián)函數(shù)和宏都用于避免函數(shù)調(diào)用的開銷并編寫可復(fù)用的邏輯部分,但它們?cè)诠ぷ鞣绞胶桶踩苑矫娲嬖陲@著差異。
    的頭像 發(fā)表于 07-25 15:10 ?1635次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>中的內(nèi)聯(lián)<b class='flag-5'>函數(shù)</b>與宏

    深入理解C語(yǔ)言函數(shù)—編程中的“積木塊”藝術(shù)

    在編程的世界里,函數(shù)就像建筑中的“積木塊”——它們是構(gòu)建復(fù)雜程序的基石。通過靈活組合這些模塊,開發(fā)者能打造出功能強(qiáng)大且結(jié)構(gòu)清晰的代碼。函數(shù)之所以成為C語(yǔ)言的核心,正是因?yàn)樗鉀Q了編程中
    的頭像 發(fā)表于 06-30 17:26 ?1312次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:<b class='flag-5'>函數(shù)</b>—編程中的“積木塊”藝術(shù)

    深入理解C語(yǔ)言C語(yǔ)言循環(huán)控制

    改變程序的執(zhí)行流程,使代碼更加靈活和可控。本文將詳細(xì)介紹這些語(yǔ)句的作用及其應(yīng)用場(chǎng)景,并通過示例代碼進(jìn)行說明。Part.1break語(yǔ)句C語(yǔ)言中break語(yǔ)句有兩種
    的頭像 發(fā)表于 04-29 18:49 ?1554次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>循環(huán)控制

    為什么不需要給回調(diào)函數(shù)傳遞參數(shù)

    回調(diào)函數(shù)C語(yǔ)言里面一個(gè)重要機(jī)制。
    的頭像 發(fā)表于 04-15 10:11 ?533次閱讀

    STM32H7 0x00000000地址的內(nèi)容引發(fā)hardfault怎么解決?

    函數(shù)時(shí)入異常,進(jìn)入hardfault. 求助:關(guān)于stm32h7 ,0x00000000地址的內(nèi)容是如何被改變的?觀察過正常情況下的值,如下。前三個(gè)地址的值是0,但異常時(shí),前三個(gè)地
    發(fā)表于 03-07 08:15

    LD2410B/C新手必看攻略! 測(cè)試教程、模塊調(diào)一文詳解~

    關(guān)于LD2410B/C那些你不得不知道的事?免費(fèi)申樣、接線教程、參數(shù)解析、APP調(diào)教程、上位機(jī)調(diào)教程、常見異常情況自檢等等內(nèi)容,一文匯總~不管是萌新小白還是資深玩家,都可以快速入門
    的頭像 發(fā)表于 02-05 18:09 ?2280次閱讀
    LD2410B/<b class='flag-5'>C</b>新手必看攻略! 測(cè)試教程、模塊調(diào)<b class='flag-5'>參</b>一文詳解~

    C語(yǔ)言如何處理函數(shù)的返回值

    的那樣,直接把 1234 賦值給了變量 ret? 搞懂這個(gè)問題不難,只要看下匯編代碼就行。 把代碼編譯一下,只編譯不鏈接,得到的就是C對(duì)應(yīng)的匯編代碼。 這塊是 test 函數(shù),不用管上面這些代碼,如果一行一行去分析,沒有匯編基礎(chǔ)的話確實(shí)會(huì)頭疼。 看下這行代碼,很明顯,12
    的頭像 發(fā)表于 01-16 09:21 ?663次閱讀

    EE-128:C語(yǔ)言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語(yǔ)言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>中的DSP:從<b class='flag-5'>C</b>調(diào)用匯編類成員<b class='flag-5'>函數(shù)</b>

    C語(yǔ)言筆試題

    來(lái)看一個(gè)C語(yǔ)言筆試題,應(yīng)該很少有人能給出正確答案。 #include int f(){ printf("this is f ..."); return 1;}int g(){ printf
    的頭像 發(fā)表于 12-30 09:48 ?603次閱讀

    LMX2595在不改變設(shè)定參數(shù)的情況下,能實(shí)現(xiàn)多寬范圍的倍頻?

    我想問一下LMX2595在倍頻的過程中,在不改變設(shè)定參數(shù)的情況下,能實(shí)現(xiàn)多寬范圍的倍頻?
    發(fā)表于 12-12 07:05

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個(gè)返回值。 C語(yǔ)言函數(shù)可以不寫返回值類型,
    的頭像 發(fā)表于 11-29 10:25 ?1172次閱讀

    使用C語(yǔ)言實(shí)現(xiàn)函數(shù)模板

      用C語(yǔ)言能不能實(shí)現(xiàn)一個(gè)通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點(diǎn)數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?1153次閱讀

    C語(yǔ)言中的socket編程基礎(chǔ)

    數(shù)據(jù) 步驟6:關(guān)閉socket 創(chuàng)建socket 在C語(yǔ)言中,創(chuàng)建socket需要使用socket()函數(shù)。這個(gè)函數(shù)需要兩個(gè)參數(shù):域
    的頭像 發(fā)表于 11-01 16:51 ?1727次閱讀

    AIC3106如何在不改變BCLK和LRCLK的情況下,能夠調(diào)好?

    你好,請(qǐng)問:AIC3106現(xiàn)在配置為從設(shè)備、DAC采樣率為16K、數(shù)據(jù)寬度為32位?,F(xiàn)在主設(shè)備給的BCLK是2048K,LRCLK為16K,播放現(xiàn)在有問題,如何在不改變BCLK和LRCLK的情況下,能夠調(diào)好?
    發(fā)表于 10-28 07:06