首页 > 解决方案 > 如果一个 C 函数被调用两次,它会创建一个在函数中声明两次的变量吗?

问题描述

我有一个用 C 编写的函数,它包含一个像这样的指针变量

#include<stdio.h>
void print()
{
    char *hello="hello world";
    fprintf(stdout,"%s",hello);
}

void main()
{
    print();
    print();
}

如果我调用 print() 函数两次,它会为hello变量分配两次内存吗?

标签: cprintfdynamic-memory-allocationstdio

解决方案


如果我调用 print() 函数两次,它会为 hello 变量分配两次内存吗?

不,它是一个字符串文字,只分配一次。

您可以通过检查地址来检查:

fprintf(stdout,"%p: %s\n", hello, hello);

样本输出:

0x563b972277c4: hello world
0x563b972277c4: hello world

推荐阅读