c - 如果一个 C 函数被调用两次,它会创建一个在函数中声明两次的变量吗?
问题描述
我有一个用 C 编写的函数,它包含一个像这样的指针变量
#include<stdio.h>
void print()
{
char *hello="hello world";
fprintf(stdout,"%s",hello);
}
void main()
{
print();
print();
}
如果我调用 print() 函数两次,它会为hello变量分配两次内存吗?
解决方案
如果我调用 print() 函数两次,它会为 hello 变量分配两次内存吗?
不,它是一个字符串文字,只分配一次。
您可以通过检查地址来检查:
fprintf(stdout,"%p: %s\n", hello, hello);
样本输出:
0x563b972277c4: hello world
0x563b972277c4: hello world
推荐阅读
- java - 在 RxJava 中将对象的 Single 转换为同一对象的内部字段的 Single
- c# - 向 ICommand (C# WPF) 添加新方法
- javascript - 选择特定的 div 以使用 eventListener 设置属性
- html - 改变 UL 内 LI 项目之间的距离:“行高”方法不起作用
- r - 将日期聚合为 R 中的日期间隔/期间
- java - Android 中的段落和项目符号
- c - 为什么我不能在这段代码中用 C 分配数组元素后立即打印它?
- java - 如何让spring为JdbcMetadataStore创建对应的schema?
- c# - 发布中的 C# Windows 窗体应用程序引用错误
- roslyn - vsix 项目上下文菜单 visualstudioworkspace