标题:
请教大家sizeof函数
[打印本页]
作者:
egsresrhtrhrtst
时间:
2024-6-26 20:19
标题:
请教大家sizeof函数
函数
void buzzer_on(int* music)
{
sizeof(music)
}
实际传入的是一个数组
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是指针,计算的是指针占用内存的大小,还有sizeof不是函数
作者:
xiaobendan001
时间:
2024-6-27 07:34
sizeof是操作符,不是函数,只能用在静态内存分配的变量上面。
作者:
123156fsadf
时间:
2024-6-27 08:45
int* music 你传进去的是指针,你这个平台的cpu int型指针的大小是4
作者:
Y_G_G
时间:
2024-6-27 09:35
sizeof是C语言关键字,不是函数,它就像for if之类的
它的含义1楼已经说明了
sizeof(music)它是计算music所占空间的大小,就是music变量所占的字节数
作者:
EELDFW
时间:
2024-6-27 10:19
sizeof(*music)
作者:
egsresrhtrhrtst
时间:
2024-6-27 21:23
再问一下各位,像这样怎么才可以读取出实际的大小呢,就是以传入形参的方式,有没有其他的关键字,或者怎样改动一下,谢谢各位。
作者:
xzw5151
时间:
2024-6-28 10:19
可以把size大小作为参数传递给目标buzzer_on。
作者:
mrfdream
时间:
2024-6-28 10:44
一般都是将数组地址、数组长度作为参数传入函数的。
// 函数
void buzzer_on(int* music, int len)
{
...
}
int main()
{
buzzer_on(solitary_brave, sizeof(solitary_brave));
}
但是,如果因为特殊原因,不能把长度当参数,那,,,如果是我的话,会在每个数组末尾加个特殊字符,例如:
// 数组
int solitary_brave_1[]=
{
M6,50,M7,50,H1,50,H2,50,M7,50,H1,50,H1,100,Z0,10,FF // FF当作特殊字符
};
// 函数
void buzzer_on(int* music)
{
int* ptr;
int len = 0;
ptr = music;
while(*ptr != FF)
{
len++;
ptr++;
}
len *= 4; // len就是数组长度
}
作者:
黄youhui
时间:
2024-7-2 10:24
egsresrhtrhrtst 发表于 2024-6-27 21:23
再问一下各位,像这样怎么才可以读取出实际的大小呢,就是以传入形参的方式,有没有其他的关键字,或者怎样 ...
要不你试试函数strlen()函数,这是计算字符串长度的函数。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1