这个c代码行做了什么?(const VAR ="string";)

iha*_*ter 5 c string variables

偶然发现这行c代码,但不确定它是否有效.它有什么作用?变量的类型是什么?

const VARNAME = "String of text";
Run Code Online (Sandbox Code Playgroud)

m0s*_*it0 6

奇怪的是,我没想到要编译它,但确实如此.但是,编译器不太喜欢它:

..\main.c:4:7: warning: type defaults to 'int' in declaration of 'VARNAME'
..\main.c:4:17: warning: initialization makes integer from pointer without a cast
Run Code Online (Sandbox Code Playgroud)

因此它确实将int作为默认类型,因此VARNAME具有指针值,因为字符串是指针(稍后可以将其转换为char*).

这非常有效(在Intel IA32机器上):

#include<stdio.h>

const VARNAME = "String of text";

int main()
{
    printf("%s\n", (char*)VARNAME);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但我个人不会使用这种隐式输入.如下面的评论所述:

它甚至是危险的,因为sizeof(int)可能小于sizeof(char*)

  • 它甚至是危险的,因为`sizeof(int)`可能小于`sizeof(char*)`. (2认同)