在下面的代码中,这一行:
b[6] = Hello
抛出此错误:
invalid conversion from 'const char*' to 'char' [-fpermissive]
问题
为什么我收到此错误?实际上,我想要的只是声明" b [6]"分别。不像char b [6] ="你好"喜欢如果我拿一个int变量说" int x"然后我可以轻松地单独声明它的值" x = 2"但是在这里,对于字符串变量,为什么我无法做到这一点。
int a;
char b[6];
scanf("%d", &a);
if( a == 1)
b[6] = "Hello";
else
printf("Wrong");
答案 0 :(得分:2)
在C中,字符串被视为<div class="outer circle shapeborder">
<span>Release planning</span>
<div class="inner circle shapeborder">
<span>Iteration planning</span>
<div class="inner circle shapeborder">
<span>Daily planning</span>
</div>
</div>
</div>
数组,并且数组的名称被视为指向数组开头的指针。
char
基于此声明,char b[6];
是指向6 b
s数组开头的指针。
char
此行尝试将b[6] = "Hello";
的第6个元素设置为&#34; Hello&#34;,但这样做有两个问题:
b
实际上并不存在。 b[6]
长度为6个元素,从索引0开始,因此您可以使用的最高索引是5.
b
是一个数组,因此b
引用特定的b[6]
,而您尝试将其设置为String,即指向char
的指针,因此你的错误信息。
如果你试图让char
保持&#34; Hello&#34;的值,有很多方法可以做到这一点。从理论上讲,你的b
方法可行,但大多数人可能认为这是不好的做法。最基本的是将数组中b = "Hello";
的值设置为&#34; Hello&#34;中的字母。一个接一个,后跟一个char
字节。使用NULL
标准库,您可以(也可能应该)使用<string.h>
来执行此操作。
strcpy
答案 1 :(得分:0)
b enter code here
[6] =&#34;你好&#34 ;;
在这里,您将char char *分配给单个char(此外,char超出范围)。
如果你想要举办&#34; H&#34;做:
strcpy(b, "H");
答案 2 :(得分:0)
关于:
b[6] = "Hello";`
引用数组时;结果是数组的第一个字节的地址。
因此该声明试图分配&#34; Hello&#34;的地址。到char b[]
。
您是否正在尝试填充数组b[]
?如果是这样,那么正确的方法是:
strcpy( b, "Hello" );
答案 3 :(得分:-3)
你应该像b [] =“Hello”;
一样使用它