c++ - 关于函数和指针的作业需要帮助

标签 c++ function

假设 f() 返回对整数的引用 (int & f();)、f()+=5;f( )=f()+5; 是不同的,请解释如何并给出 f() 的伪代码来说明这种差异。

如果p是一个int *p,C++中这两条语句有什么区别:

if (p!=NULL && *p !=0).... 
if (*p !=0 && p !=NULL)....

最佳答案

首先,您可以让 f() 声明两个静态变量和一个指向其中一个的静态指针。

然后在每次调用时交替返回它们,例如(伪代码,因为它是家庭作业):

def f():
    static var1 = 0;
    static var2 = 42;
    static pointer curr_var = reference of var1
    if curr_var == reference of var1:
        curr_var = reference of var2
    else:
        curr_var = reference of var1
    return curr_var

或者,更糟的是:

def f():
    static var1 = array[1024];
    static idx = -1;
    idx = (idx + 1) % 100
    return reference of var1[idx]

对于你的第二个问题,提示是*pp之间的区别。例如,在 p 本身可能为 NULL 的情况下,我不会使用第二个。

关于c++ - 关于函数和指针的作业需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10545252/

相关文章:

java - Java 中的引用对象

Java基础: a static function without a name,或返回类型

c++ - 派生类构造函数中的异常

c++ - 不能在类范围内使用 `static_assert` 和 `sizeof`(但方法范围没问题)

c++ - strchr, memchr 定位字符失败

r - 如何对每个矩阵元素的索引应用函数

c++ - 函数指针的函数模板特化

c++ - 错误消息:嵌套名称说明符中的类型不完整

javascript - PHP 函数仅在未直接访问时运行

javascript - JS : How can I prevent access to the global variables do?