c - 将指针从 main() 移动到第一个可执行函数

标签 c pointers deque

有什么方法可以将在 main() 函数中初始化的指针移动到第一个可执行函数并在整个程序中访问它?

代码如下:

main函数,指针d初始化的地方:

void main(){
    int x;
    deque *d;
    d=(deque*)malloc(sizeof(deque));
    initDeque(d);

我想将指针移动到名为 initDeque()

的函数中
void initDeque(deque *d){ //Create new deque
    d->front=NULL;
    d->rear=NULL;
}

可以移动吗?

最佳答案

如果“移动指针”的意思是您想要移动变量声明,那么您可以这样做,但它将成为一个只能在该函数内部访问的局部变量。显然不是您想要的。

您需要将其设为全局,以便从所有范围访问它。请注意,全局变量被认为是丑陋的,会增加出错的风险,并且通常会使代码不那么清晰。

使用全局指针,它看起来像这样:

deque *d;

void initDeque(void)
{
  d = malloc(sizeof *d);
  d->front = d->rear = NULL;
}

注意你shouldn't cast the return value of malloc() in C .

另请注意,没有人 会有一个使用单个小写字母命名的全局变量。 方式很容易将其与局部变量混淆,因此您至少应该使名称更明显,例如像

deque *theDeque;

关于c - 将指针从 main() 移动到第一个可执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718903/

相关文章:

c - 查找宏生成的所有函数

c - 字符串和管道中的奇怪行为

c - 关于列表和指针 C 的考试练习

java - 如何使用deque进行线程通信?

python - collections-deque 中的错误 - Python

c++ - 识别 C/C++ 中未使用的函数

C 编程 - 每 n 分钟触发一次进程

二维数组的 C 指针算法

c++ - 在 C++ 中打印一个 char*

Python - 使用 popleft() 遍历双端队列