首页 > 解决方案 > 我应该在以下代码中找到错误但找不到

问题描述

我应该在下面的代码中找到错误但找不到。mf(6) 不应该给出与 mf(i) 相同的结果吗?

#include <stdio.h>

#include <stdlib.h>
#include <string.h>

#define mf(x) f(&x)

void f(int*);

int main()
{
     int i = 6;

     mf(i);
     mf(6);

 return EXIT_SUCCESS;
}

void f(int* ptr)
{
    printf("%d\n",*ptr);
}

标签: c

解决方案


如果你编译该代码,你应该得到一个错误:

错误:需要左值作为一元“&” 操作数

一元 &(地址)运算符需要一个左值作为其操作数。

引用左值和右值


推荐阅读