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

標題: 請教大家sizeof函數(shù) [打印本頁]

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


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



buzzer_on(solitary_brave);

想問一下各位為什么sizeof(music)打印出來的值是4,而不是實際大小
直接sizeof(solitary_brave)打印出來才是實際的值
是哪里錯了嗎



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

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

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

但是,如果因為特殊原因,不能把長度當參數(shù),那,,,如果是我的話,會在每個數(shù)組末尾加個特殊字符,例如:
// 數(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當作特殊字符
};

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

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

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

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





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