今天遇到这样一种写法(C语言):char * str="abc""def"; 这样也能给字符串赋值,语法好奇怪,你们见过吗

匿名用户    2011-08-25 12:42    

满意回答

对的,两个被双引号括起来点扬的字符串,只要当中是空格(包括换行),C就认孟荒尺为这是一个字符串。在悠荒《C PRIMER PLUS》第四章的 Exploring and Exploiting printf() and scanf()小节中有如下引文: new with ANSI C, is string concatenation. If you follow one quoted string constant with another, separated only by whitespace, C treats the combination as a single string

匿名用户   2011-08-25 13:26
宝宝知道提示您:回答为网友贡献,仅供参考。

为您推荐:

其他回答

首先第一个指针形式的str指向一个字符串,这样指向以后就不能通过str对abcdef这个字符串修改了,但是你可以给str用别的字符串再赋值,这样他就指向了别的字符串,但是一旦指向某个字符串,就不能通过这个指针对字符串修改了。 第二种数组形式的str,其实数组名就是指针常量,也就是说一旦他初始化了,...它指向的地址就固定了,就不能再用别的字符串赋值了(这就不同于指针形式的str),但是这个地址里放什么是可以改变的(指针形式的就不能改变了),比如说初始化之后在通过cin>>str改变数组的内容还是没有问题的。 char Str[]="abcdef";这种写法是没有问题的,这样不写数组大小但必须要对其初始化,如果没初始化就必须声明数组大小。 明白?

全部展开 收起
匿名用户    2011-08-25 22:02

字符串函数赋值,更奇怪 #include #include void main() { char a="i love you"; char b="love"; char *str=strstr(a,b); printf("%s",str); }

匿名用户    2011-08-25 15:13

这样的赋值是可以的,编译器会帮你把abc和def定义在连续的地址上合并成一个字符串,所以这个等价于 char* str="abcdef";

匿名用户    2011-08-25 13:26

没见过 不过 貌似""这个 是要输入的字符吧?

匿名用户    2011-08-25 13:12
加载更多