小编Mar*_*lic的帖子

在C++上进行预处理器解析

如果我们想使用用户输入在程序中执行某些操作,或者打印我们需要的结果

 #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,我也没有得到编译错误.
有人可以解释一下为什么会这样吗?

c++ c-preprocessor

7
推荐指数
1
解决办法
1064
查看次数

使用指针作为函数的数据

好吧,我们有一个函数调用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)

而我根本不明白为什么.也许我在这个洞指针/函数调用的东西中理解了一些错误.任何帮助都会被批评

c++ pointers

1
推荐指数
2
解决办法
122
查看次数

标签 统计

c++ ×2

c-preprocessor ×1

pointers ×1