如果我们想使用用户输入在程序中执行某些操作,或者打印我们需要的结果
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
否则,cout并且cin将不会被compiler.However承认命令#include是预处理器命令.当我编写程序时,发生了以下情况.我写了以下代码:
#define PRINT_DEBUG_INFO(a) {cout << “Info: ” << a << endl;}
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
并且没有错误弹出.如何cout在包括之前使用iostream?即使我声明PRINT_DEBUG_INFO(a)不包括 iostream,我也没有得到编译错误.
有人可以解释一下为什么会这样吗?
好吧,我们有一个函数调用incr,它只是将数字增加1,然后返回新值,但将指针作为参数:
int incr(int *arg)
{
*arg++;
return *arg;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我们写下以下内容:
int main()
{
int i = 1, j = 0;
cout << j << endl;
int* p_i = &i;
j = incr(p_i); // changes both i and j
cout << i << ", " << j << endl; //should print 2, 2
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为我们使用变量的指针作为参数i,如果函数*p_i内部发生了某些事情incr,那么更改对于i何时incr完成也是永久性的.也因为我们设置j=incr(i)并且我们不返回p_i自己,但是它的内容(现在是2的值)i),j现在应该是2.但由于某种原因,结果如下:
1, -858993460
Run Code Online (Sandbox Code Playgroud)
而我根本不明白为什么.也许我在这个洞指针/函数调用的东西中理解了一些错误.任何帮助都会被批评