gpt4 book ai didi

c - C中常量的内存地址

转载 作者:行者123 更新时间:2023-12-03 21:10:43 25 4
gpt4 key购买 nike

我正在学习 C 中的指针,但我有几个问题。
这是一段代码,仅作为示例。

int var = 300;
char s[] = "Clang";
char *p = "Wonder";
我知道所有变量在内存中都有它们的地址。
var 这样的变量和 sp在内存中有自己的地址。
但我想知道常量是否也有内存地址。
300 , "Clang" , "Wonder"自己有内存地址吗?

最佳答案

变量和常量的内存使用是编译器实现的问题。在实践中,常量定义如下:

const *foo = "bar";
const int answer = 42;
通常会占用内存并有地址。也就是说,在运行时程序地址空间中的某个位置,您将找到表示文本“bar”的字节序列和表示数字 42 的字节序列。
然而,由于现代编译器进行了激进的优化,一些常量可能根本没有运行时存在是合理的。例如,在这样的片段中:
const int foo = 3;
int x = foo * 4;
可以想象,如果 foo从未在其他任何地方使用过,编译器可能(实际上)将其转换为:
int x = 12;
foo甚至在运行时都不存在。
顺便说一句,许多开发人员将 C 预处理器宏视为“常量”:
#define PI 3.14159
这些通常在运行时不占用内存,因为它们在编译时被替换到代码中。

关于c - C中常量的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63965744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com