iha*_*ter 5 c string variables
偶然发现这行c代码,但不确定它是否有效.它有什么作用?变量的类型是什么?
const VARNAME = "String of text";
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我没想到要编译它,但确实如此.但是,编译器不太喜欢它:
..\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*)