char str[10]="china";为啥不等价于 char str[10];str[]={"china"};详解
时间: 2024-03-21 11:42:23 浏览: 42
在 C 语言中,字符串是以 null 终止的字符数组。在第一个语句中,我们创建了一个长度为10的字符数组,并将其初始化为 "china"。由于 "china" 中有5个字符,因此编译器会自动在数组的末尾添加一个 null 字符 '\0',以表示字符串的结尾。这样,我们就得到了一个包含字符串 "china" 的字符数组。
在第二个语句中,我们创建了一个长度为10的字符数组,但是没有对它进行初始化。这意味着数组中的值是未定义的,即不确定的。如果我们要初始化该数组为 "china",我们需要将字符逐个赋值给数组元素,包括字符串的结尾 null 字符。因此,正确的初始化方式应该是:
```
char str[10];
str[0] = 'c';
str[1] = 'h';
str[2] = 'i';
str[3] = 'n';
str[4] = 'a';
str[5] = '\0';
```
这样,我们就得到了与第一个语句等价的字符数组。
相关问题
char str[10]="china";等价于char str[10];str[]={"china"};吗
不完全等价。第一个语句创建了一个长度为10的字符数组并将它初始化为"china",而第二个语句创建了一个长度为10的字符数组,但是没有对它进行初始化,因此其值是未定义的。如果要使第二个语句等价于第一个语句,应该这样写:char str[10] = {'c', 'h', 'i', 'n', 'a', '\0'};
下面判断正确的是()。 A. char *a="china"; 等价于 char *a; *a="china" ; B. char str[10]={"china"}; 等价于 char str[10]; str[]={"china";} C. char *s="china"; 等价于 char *s; s="china" ; D. char c[4]="abc",d[4]="abc"; 等价于 char c[4]=d[4]="abc" ;
正确的选项是C. char *s="china"; 等价于 char *s; s="china" ;
解析:
A. char *a="china"; 是将字符串 "china" 赋值给指针变量 a,相当于 char *a; a="china"; 而 *a="china" 是错误的,因为*a 表示的是指针 a 所指向的内存空间,而 "china" 是一个字符串常量,不能直接赋值给指针所指向的内存空间。
B. char str[10]={"china"}; 是将字符串 "china" 复制到字符数组 str 中,相当于 char str[10]; strcpy(str,"china"); 而 str[]={"china";} 是错误的,因为字符数组的初始化必须使用 strcpy 函数或者逐个赋值的方式。
C. char *s="china"; 是将字符串 "china" 赋值给指针变量 s,相当于 char *s; s="china"; 这是正确的。
D. char c[4]="abc",d[4]="abc"; 是将字符串 "abc" 复制到字符数组 c 和 d 中,相当于 char c[4],d[4]; strcpy(c,"abc"); strcpy(d,"abc"); 而 char c[4]=d[4]="abc" 是错误的,因为字符数组的初始化必须使用逐个赋值或者 strcpy 函数的方式。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)