c使用二级指针隐藏对于结构体全局变量的定义
时间: 2023-11-02 22:16:15 浏览: 88
您好!感谢您的提问。我理解您想了解如何使用二级指针隐藏对于结构体全局变量的定义。
在C语言中,我们可以使用二级指针来实现对于结构体全局变量的定义的隐藏。具体来说,我们可以在一个函数中动态地分配一个结构体变量的内存,并将其地址保存在一个全局的二级指针变量中。这样,在其他函数中,我们便可以通过该二级指针来访问该结构体变量,而无需暴露其定义。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int num;
} MyStruct;
MyStruct **p;
void createStruct() {
MyStruct *ms = (MyStruct *) malloc(sizeof(MyStruct));
ms->num = 10;
p = &ms;
}
void printNum() {
printf("The number is: %d\n", (*p)->num);
}
int main() {
createStruct();
printNum();
return 0;
}
```
在上述示例中,我们定义了一个结构体 `MyStruct`,其中包含一个整型成员 `num`。接着,我们定义了一个全局的二级指针变量 `**p`,用来保存动态分配的 `MyStruct` 实例的地址。
在函数 `createStruct` 中,我们动态地分配了一个 `MyStruct` 实例的内存,并将其地址保存在 `ms` 指针变量中。然后,我们将 `p` 的值设置为 `&ms`,即将其指向 `ms` 指针变量的地址。
在函数 `printNum` 中,我们通过二级指针 `**p` 来访问 `MyStruct` 实例的成员 `num`,并打印其值。
在 `main` 函数中,我们先调用 `createStruct` 函数来创建一个 `MyStruct` 实例,并将其地址保存在 `p` 中。然后,我们调用 `printNum` 函数来打印该实例的成员值。
输出结果为:
```
The number is: 10
```
希望以上内容能对您有所帮助!
阅读全文