我有一段遗留代码,char*
它有用于 if-then-else 逻辑流的函数参数。例如:
void myFunc(char *f_reset) {
.....
.....
if(*f_reset) {// do this;}
else {// do that;}
}
假设我是myFunc(char *f_reset)
从main()
void main(void) {
char r = 0;
char *f_reset = &r;
*f_reset = 0;
myFunc(f_reset); // Debug and enter this function
}
当我尝试进入函数调用时,我发现它*f_reset
永远不会被评估为0
错误 - 因为一些垃圾-8342345825
或类似的东西,它总是正确的。
它使用的原因char*
可能是因为在过去 boolean 比 char * 占用更多的内存?我过去在 Stackoverflow 帖子中读到的一些内容。
char*
有人可以给我一个关于逻辑真假之间关系的虚拟指南吗?