c - 你如何在 C 中声明字符串常量?

标签 c string

我知道在 C 语言中将数字常量声明为 enum 而不是 #define 是非常惯用的,或者至少是一种很好的风格。

/* bad style */
#define MAXLINE 1024

/* good/better style */
enum {
    MAX_LINE = 1024
};

字符串常量的定义是否有等价的规则?

/* is this good style? */
#define HELLO "Hello World"

/* or is this better? */
const char *HELLO2 = "Howdy";

你喜欢什么?如果可能的话,展示这两种方法的一些缺点。

最佳答案

还有一条(至少)通往罗马的路:

static const char HELLO3[] = "Howdy";

(static — 可选 — 是为了防止它与其他文件冲突)。我更喜欢这个 const char* , 因为那样你就可以使用 sizeof(HELLO3)因此,您不必将可以在编译时执行的操作推迟到运行时。

尽管如此,define 具有编译时串联的优势(想想 HELLO ", World!" ),您可以 sizeof(HELLO)

但是你也可以选择 const char*并在多个文件中使用它,这将为您节省一点内存。

简而言之——视情况而定。

关于c - 你如何在 C 中声明字符串常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1431576/

相关文章:

c - 我们如何为变量指定物理地址?

java - Printf:Java 和 C 实现的差异

C 在用随机整数存储的数组中搜索值

python - 计算 numpy 数组 python 中字符串出现次数的更快方法

javascript - 从javascript数组获取随机值并将其打印为字符串

c - 如何循环一个整数数组并将正数和负数保存到另一个数组中?

C 编程指针和数组?

c++ - 真正的位置字符串格式?

C++:使用 std::string 在内存中移动 jpeg 是否安全?

python - 如何从 Python 中的字符串中获取整数值?