typedef char *b 是什么意思?
what does it mean typedef char *b?
我正在通读这段内存管理代码重载 operator new。有类似
的表达
typedef char *b
后来在代码中b是这样使用的:
b(h); //h is a pointer to some class;
h 定义在这里:
static Head* h= (Head*) HEAP_BASE_ADDRESS;
我假设当使用 b 时,它被认为是指向 char 的指针。但是指针怎么会有像 b() 这样的表达式呢?这里有某种转换吗?我可以理解为 b 现在与 h 具有相同的地址吗?
您发布的第一行代码是 typedef
which creates an alias for char*
as b
. The second code line shows a functional-style type conversion 从 h
到 b
。
Can I understand it as b now is having the same address as h?
b
只是 char*
的一个别名,所以 b(h)
最终什么都不做,除非你像这样存储该表达式的结果:
b b_ptr = b(h); // equivalent to: char* b_ptr = ((char*)h);
函数式类型转换仅适用于单字类型名称,所以如果您想使用这种转换风格,例如一个指针,你必须先 typedef
它。 (这就是 typedef char *b
的原因。)这种转换方式可以用于像 int(3.14 + 6.67)
.
这样的表达式
我正在通读这段内存管理代码重载 operator new。有类似
的表达typedef char *b
后来在代码中b是这样使用的:
b(h); //h is a pointer to some class;
h 定义在这里:
static Head* h= (Head*) HEAP_BASE_ADDRESS;
我假设当使用 b 时,它被认为是指向 char 的指针。但是指针怎么会有像 b() 这样的表达式呢?这里有某种转换吗?我可以理解为 b 现在与 h 具有相同的地址吗?
您发布的第一行代码是 typedef
which creates an alias for char*
as b
. The second code line shows a functional-style type conversion 从 h
到 b
。
Can I understand it as b now is having the same address as h?
b
只是 char*
的一个别名,所以 b(h)
最终什么都不做,除非你像这样存储该表达式的结果:
b b_ptr = b(h); // equivalent to: char* b_ptr = ((char*)h);
函数式类型转换仅适用于单字类型名称,所以如果您想使用这种转换风格,例如一个指针,你必须先 typedef
它。 (这就是 typedef char *b
的原因。)这种转换方式可以用于像 int(3.14 + 6.67)
.