K&R的这部分(C书)让我思考:
从书中:
struct tnode {
char *word;
int count;
struct tnode *left;
struct tnode *right;
};
Run Code Online (Sandbox Code Playgroud)
节点的递归声明可能看起来很简单,但它是正确的.
因为tnode的定义不使用tnode,而只是指向tnode的指针,编译器给我们一个免费的通行证.但是我想知道计算机知道多少内存给它一个tnode?
Kar*_*ath 14
指针具有固定大小(32/64位,具体取决于平台),因此编译器知道左右指针需要多少内存,并且可以计算结构的整个大小.
出于同样的原因,如果你需要一个指针,它就足以做一个前向声明struct tnode;,你可以使用一个指向该结构的指针,例如:struct tree { struct tnode* root; };
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |