初始化字符和字符串的说一下,用一维数组和二维数组的也说一下
一维的我知道方括号可以不写,但如果初始化字符串时,方括号里的一定要写的话,是多少,举个例吧
这么说char a[5]="abcdef" 是错的了?
可老师说char a[10]={‘a','b','c','d','e','f','g','h','i''}要自己在最后加个'\0',因为系统不会自动追加的,这么说的话,在使用上,两者是一样的,只是后者简单点,是这样吗?
后面初始化可以空着吗,就是想 char a[10]={‘a','b',’\0'} 这样的,可以吗?
是错误的,越界了,你定义的a组只能容纳5个字符,除去'\0'只有4个,
char a[10]="abcdef"
char b[10]={‘a','b','c','d','e','f','g','h','i''}
两者是不一样的,注意char a[10]="abcdef"是字符串常量,定义完了后再使用a=“sdsd”就会报错
但是a[0]='a'没有问题
char b[10]没有限制定义完了可以重新再改变值;
另外使用c中printf函数输出的时候使用%s输出,这个时候'\0'重要,因为它是字符串结束的标志,
如
char a[3]={'a','b','v'},没有问题也能编译通过,但是printf("%s",a)输出后发现输出abc还有乱码字符,因为没有'\0'结束系统不知道什么时候结束,所以除了abv还有乱码,所以我们后面一定加上
\0.char a[3]只能存储2个字符。我们后面学习关于字符串拷贝,求长都是以\0'作为字符串结束标志,所以我们一定要加上'\0'
至于你说的单独输出的话是一样的,字符串本身的就是字符数组
那例如 char a[5]="abcdef",是对还是错?
还有 char a[10]={"a","b","c"} 和 char a[10]=”abc“ 又有什么不同?
char a[10]={"a","b","c"} 是错误的写法,因为你定义的是一维数组,而后面花括号里写的确是二维的,即三行一列。
追问你都没回答我第一个问题,
第二个我写错了char a[10]={‘a','b','c','d','e','f','g','h','i','\0'},本来是想省略写的,我的意思是 char a[10]={‘a','b','c','d','e','f','g','h','i','\0'}和char a[10]=”abcefghi“ 有什么不一样,输出好像一样吧。
求求你帮个忙好吗,满意有高分的