標(biāo)題: 請(qǐng)教大家sizeof函數(shù) [打印本頁(yè)]

作者: egsresrhtrhrtst    時(shí)間: 2024-6-26 20:19
標(biāo)題: 請(qǐng)教大家sizeof函數(shù)
函數(shù)
void buzzer_on(int*        music)
{
       sizeof(music)
       
}


實(shí)際傳入的是一個(gè)數(shù)組
int solitary_brave[]=
{
        M6,50,M7,50,H1,50,H2,50,M7,50,H1,50,H1,100,Z0,10,
};



buzzer_on(solitary_brave);

想問(wèn)一下各位為什么sizeof(music)打印出來(lái)的值是4,而不是實(shí)際大小
直接sizeof(solitary_brave)打印出來(lái)才是實(shí)際的值
是哪里錯(cuò)了嗎



作者: 624353765    時(shí)間: 2024-6-27 06:35
music是指針,計(jì)算的是指針占用內(nèi)存的大小,還有sizeof不是函數(shù)
作者: xiaobendan001    時(shí)間: 2024-6-27 07:34
sizeof是操作符,不是函數(shù),只能用在靜態(tài)內(nèi)存分配的變量上面。
作者: 123156fsadf    時(shí)間: 2024-6-27 08:45
int*        music 你傳進(jìn)去的是指針,你這個(gè)平臺(tái)的cpu int型指針的大小是4
作者: Y_G_G    時(shí)間: 2024-6-27 09:35
sizeof是C語(yǔ)言關(guān)鍵字,不是函數(shù),它就像for  if之類(lèi)的
它的含義1樓已經(jīng)說(shuō)明了
sizeof(music)它是計(jì)算music所占空間的大小,就是music變量所占的字節(jié)數(shù)
作者: EELDFW    時(shí)間: 2024-6-27 10:19
sizeof(*music)
作者: egsresrhtrhrtst    時(shí)間: 2024-6-27 21:23
再問(wèn)一下各位,像這樣怎么才可以讀取出實(shí)際的大小呢,就是以傳入形參的方式,有沒(méi)有其他的關(guān)鍵字,或者怎樣改動(dòng)一下,謝謝各位。
作者: xzw5151    時(shí)間: 2024-6-28 10:19
可以把size大小作為參數(shù)傳遞給目標(biāo)buzzer_on。
作者: mrfdream    時(shí)間: 2024-6-28 10:44
一般都是將數(shù)組地址、數(shù)組長(zhǎng)度作為參數(shù)傳入函數(shù)的。

// 函數(shù)
void buzzer_on(int*  music, int len)
{
     ...  
}

int main()
{
    buzzer_on(solitary_brave, sizeof(solitary_brave));
}

但是,如果因?yàn)樘厥庠�,不能把長(zhǎng)度當(dāng)參數(shù),那,,,如果是我的話,會(huì)在每個(gè)數(shù)組末尾加個(gè)特殊字符,例如:
// 數(shù)組
int solitary_brave_1[]=
{
        M6,50,M7,50,H1,50,H2,50,M7,50,H1,50,H1,100,Z0,10,F(xiàn)F // FF當(dāng)作特殊字符
};

// 函數(shù)
void buzzer_on(int*  music)
{
     int* ptr;
     int len = 0;

     ptr = music;
     while(*ptr != FF)
     {
         len++;
         ptr++;
     }
     len *= 4; // len就是數(shù)組長(zhǎng)度
}

作者: 黃youhui    時(shí)間: 2024-7-2 10:24
egsresrhtrhrtst 發(fā)表于 2024-6-27 21:23
再問(wèn)一下各位,像這樣怎么才可以讀取出實(shí)際的大小呢,就是以傳入形參的方式,有沒(méi)有其他的關(guān)鍵字,或者怎樣 ...

要不你試試函數(shù)strlen()函數(shù),這是計(jì)算字符串長(zhǎng)度的函數(shù)。





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