typedef后面有*是什么意思
时间: 2024-02-21 10:34:52 浏览: 137
在C++中,typedef关键字用于为某种类型定义一个新的名称。如果typedef后面有*,则表示为指向某种类型的指针定义一个新的名称。例如,以下代码定义了一个名为Ptr的指向整数的指针类型:
```
typedef int* Ptr;
```
现在,可以像下面这样使用Ptr类型:
```
Ptr p = new int;
*p = 42;
```
这将创建一个指向整数的指针,并将其赋值为42。
相关问题
typedef struct后面加*
在 C 语言中,`typedef` 可以用来定义新的类型别名。如果在 `typedef` 后面加上 `*`,则表示定义的是一个指向结构体的指针类型别名。
例如,下面的代码定义了一个名为 `NodePtr` 的类型别名,它是一个指向 `Node` 结构体的指针类型:
```
typedef struct Node {
int data;
struct Node *next;
} *NodePtr;
```
这样,在其他代码中就可以用 `NodePtr` 来代替 `struct Node*`,比如:
```
NodePtr head = NULL;
head = malloc(sizeof(struct Node));
head->data = 42;
head->next = NULL;
```
注意,这里的 `struct Node` 是在 `sizeof` 中使用的,而不是在声明 `head` 的时候。因为 `NodePtr` 已经表示了一个指向 `Node` 结构体的指针类型,所以在声明指针变量时不需要再加上 `struct` 关键字。
VS2019 C++ typedef void (*FunctionPtr)(); 这是个什么意思
`typedef void (*FunctionPtr)()` 是C++中的一种类型别名声明,它的目的是为了简化对函数指针类型的表示。这里分解一下:
- `void`: 表示这个函数没有返回值,即它不返回任何数据类型。
- `(*FunctionPtr)` 是函数指针的语法,*前面的星号(*)表示这是一个指向函数的指针。FunctionPtr是一个变量名,可以用来存储这样的函数指针。
- ()放在类型后面,表示这是一种函数类型,它接受没有任何参数并且不需要返回值的函数。
所以,当你有一个`FunctionPtr`类型的变量时,你可以将任何无返回值的函数地址赋给它,比如`void myFunction() {}`,然后通过`FunctionPtr ptr = &myFunction;` 来存储这个函数的地址,以便稍后调用。
举个例子:
```cpp
void sayHello() {
cout << "Hello!" << endl;
}
typedef void (*HelloFunc)();
int main() {
HelloFunc helloPointer = &sayHello; // 存储sayHello函数的地址
helloPointer(); // 调用sayHello函数
return 0;
}
```
阅读全文