在初始化程序中,使用具有实际意义的名称是否更有助于代码可读性和维护性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计395个文字,预计阅读时间需要2分钟。
这是最新版《C++编程语言》中Stroustrup提出的一个问题。在过去的几天里,我一直在思考这个问题。我能想到的唯一情况(这可能是不正确的)是:`int *f(int n)` 函数的返回类型应该改为 `int*`。以下是代码片段:
cint *f(int n) { int *a=a - n * sizeof(i);}
这是最新版本的Stroustrup的“C编程语言”中的一个问题.在过去的几天里,我一直在考虑这个问题.
我能想到的唯一的事情(这可能是不正确的)是这样的:
int* f(int n) { int* a = &a - n * sizeof(int*); return a; }
我的目的是获得堆栈上更高级别的地址.这有意义吗?还有其他人有其他答案吗?请记住,这是在第5章(指针,数组和结构)中,所以答案不应该涉及书中的后续内容.
我所知道的唯一(几乎)合理的情况是当你想将一个指向对象本身的指针传递给它的构造函数时.例如,假设您有一个循环链表节点:class Node { public: Node(Node* next): next(next) {} private: Node* next; };
并且您想在堆栈上创建单元素循环列表.你可以这样做:
Node n(&n);
其他一些不实用的例子(即我不明白为什么你需要那种东西),但其他方面都有效:
int n = sizeof(n); void* p = &p;
本文共计395个文字,预计阅读时间需要2分钟。
这是最新版《C++编程语言》中Stroustrup提出的一个问题。在过去的几天里,我一直在思考这个问题。我能想到的唯一情况(这可能是不正确的)是:`int *f(int n)` 函数的返回类型应该改为 `int*`。以下是代码片段:
cint *f(int n) { int *a=a - n * sizeof(i);}
这是最新版本的Stroustrup的“C编程语言”中的一个问题.在过去的几天里,我一直在考虑这个问题.
我能想到的唯一的事情(这可能是不正确的)是这样的:
int* f(int n) { int* a = &a - n * sizeof(int*); return a; }
我的目的是获得堆栈上更高级别的地址.这有意义吗?还有其他人有其他答案吗?请记住,这是在第5章(指针,数组和结构)中,所以答案不应该涉及书中的后续内容.
我所知道的唯一(几乎)合理的情况是当你想将一个指向对象本身的指针传递给它的构造函数时.例如,假设您有一个循环链表节点:class Node { public: Node(Node* next): next(next) {} private: Node* next; };
并且您想在堆栈上创建单元素循环列表.你可以这样做:
Node n(&n);
其他一些不实用的例子(即我不明白为什么你需要那种东西),但其他方面都有效:
int n = sizeof(n); void* p = &p;

