下面能正確進行字符串賦值操作的語句是( )A.char s[5]={"ABCDE"};b.char s[5]={'A','B','C','D','E'};c.char *s="ABCDEF";d.char *s;scanf("%s",s);C是對的, 但是B為什么不對?不解
熱心網友
這么說吧!這道題問得不是很明確如果按照我的理解下列字符串賦值語句正確的是:()如果題目是這個意思,確實是C正確,因為B進行的并不是字符串賦值,而是字符數組,這樣賦值出來的字符數組不能當字符串使用,因為沒有字符串的結束符'\0',如果作為字符串使用,會造成程序輸出異常甚至異常中止。這樣的變量只能是字符數組。而C賦值出來的指針是不能改變其值的(除非為改變其指向的地址),因為它所獲得的地址是字符串常量的地址,地址內的值是常量不能改變。
熱心網友
回為B項不是字符串,而是字符數組。對于字符串,其末尾一定有/0
熱心網友
B是字符數組!
熱心網友
數組初始化跟賦直是不同的,C答案也不能算完全正確,C是把地址賦直
熱心網友
對就是對,不對就不對了