C语言中字符串的赋初值问题,如何解决

如题所述

第1个回答  2023-11-09
1定义 char s[ ]="Hello";与( )等价?
A. char s[4]="Hello"; B. char *s="Hello"; C. char s[ ]={'H','e','l','l','o','\0'}; D. char s[ ]; s="Hello";
分析:首先s的长度是6,系统自动加上'\0'结尾符号;
A存在数组越界, B只是定义一个指向"Hello"的指针, D char s[ ];错误分配数组内存时候 必须有长度。 C对。

2:C. char s[ ]={'H','e','l','l','o','\0'}; D. char s[ ]; s="Hello";

下列语句中,能正确进行字符串赋值或赋初值的是(A.D)?
A. char a[5]={'h','e','l','l','o'}; B. char s[5]="hello";
C. char s[5]; s="hell"; D. char *s;s="hello";
这个是数组赋值问题 B:s长度为6,存在越界问题。
C 估计是结尾符号的问题。 D;

3:D
相似回答