c语⾔不能把字符常量赋值给字符数组
char s[20];s="helo";这样是错误的,原因就是不能⽤赋值语句将⼀个直接给⼀个字符数组赋值。
char s[20];
char ss[]="hello";
s=ss;这也是错误的,原因是不能⽤赋值语句将⼀个字符数组直接给⼀个字符数组赋值
即字符串的复制(c语⾔中,但是在c++的string 类,上⾯的赋值是正确的)必须⽤strcpy()函数实现。
⽽char a[ ]=”toyou“;为上⾯是正确呢那是因为我们在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语⾔语法的。⽽上⾯的都是不符合语法的。
char s[] = "hello";这种字符串的赋值⽅式是完全没有问题的。要理解这种赋值⽅式,我们⾸先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么⼯作。双引号主要做了3个⼯作,分别是:
(1)申请了空间(在常量区),存放了字符串。
(2)在字符串尾加上了“\0”。
(3)返回地址。
这⾥所返回的地址就赋值给了char *类型的指针变量p。
我们可以先定义⼀个数组,然后再通过scanf函数给这个数组进⾏填写东西。这样是没有⽑病的,下⾯附录⼀个代码。
>c 字符串转数组
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论