我有最简单的问题:如何初始化C中的值? 我的变量是char [20]类型,它被声明在我单位之外的某个地方。不可能改变类型。
现在我想给它一个默认值,让我们说所有空字符(或空格,无论如何),但这根本不起作用。 我已经尝试过了:
方法1。
host = "";
=>无法从'const char [1]'转换为'char [20]'
方法2。
host = " ";
=>无法从'const char [20]'转换为'char [20]
方法3。
host = ' ';
=>无法从'int'转换为'char [20]
方法4。
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
=>语法错误:'{'
...
我在这里绝望了:C的发明者如何以及为什么如此简单地向变量声明一个值:-(?
答案 0 :(得分:2)
memset(&host, 0, sizeof(host));
将用零填充它。
答案 1 :(得分:1)
initialize
的含义吗?通常,它仅在定义时间执行。declared somewhere outside of my unit
,或者您的意思是defined
?如果host
在其他地方真的是declared
,而在defining
它,则可以使用
char host[20] = {0}; //to fill with 0
或
char host[20] = { [0 ... 19] = 5 }; //to fill with 5 , supported on gcc
以后任何时候,如果您希望re-initialize
达到某个值,memset()
就可以了。查看手册页here。
答案 2 :(得分:0)
host = "";
只有当它是char *而不是char [20]时才会工作(如果你正在做一个函数,只需要参数char *)。
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
没关系,但是,首先使用
{'字符','字符','字符' ...
(用ASCII的任何字符替换字符,例如\ 0)。
其次(这是这里的主要问题)你有一个,它应该是什么(最后,所以删除它)。
答案 3 :(得分:0)
我想你已经将主变量声明为整数变量。如果你已经声明为char变量, host =“”; host =“”;这两个是可能的。因为它会占用相应的字符 位置。
host ='';这是不可能的,因为在单引号中我们只能给出角色。在这里你必须提到数组位置,否则它会抛出错误。 主持人[0] ='';
host = {“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“ ,“”,“”,“”,“”,“”,“};
这是不可能的,因为在这里它将使相应的字符不是字符串。