我以为我理解 c 和指针,但只是在调试我认为不应该工作但确实可以工作的其他人的代码。作为一个(粗略的)例子......
void clear_buffer(char* buff, int len)
{
while(len)
{
*buff++ = ' ';
len--;
}
}
main()
{
char buffer[10];
clear_buffer(&buffer,10); // 1. what I found, it still works...
clear_buffer(buffer,10); // 2. what I would have wrote
}
令我惊讶的是,上面的两个调用的工作方式完全相同。第一个给出编译器警告(不兼容的指针类型),但它仍然可以正确构建和运行。所以我的问题是:这是 C 中的预期行为,还是只是我使用的编译器很聪明并修复了错误?fwiw,这是使用微芯片 xc16 编译器。