在c语言中,下列四个语句哪个是正确的,char str[10]; str="Hello"; char *str; str="Hello"; char str[10]; str={"Hello"}; char *str; str={"Hello"};
时间: 2023-11-17 11:04:16 浏览: 64
正确的语句是:`char str[10]; str="Hello";`
这是因为在C语言中,字符数组和字符指针是不同的类型。在第一个语句中,定义了一个长度为10的字符数组`str`,并将字符串常量"Hello"赋值给了它。在第二个语句中,定义了一个字符指针`str`,并将同样的字符串常量"Hello"赋值给了它。而最后两个语句中,都是在定义了变量之后,试图用一对花括号来初始化它们,这在C语言中是不允许的。
相关问题
在c语言中,char str[10]; str="Hello"; char *str; str="Hello";第二个语句为啥错误
第二个语句`char *str; str="Hello";`是错误的,因为在C语言中,字符指针变量必须先分配内存空间,然后才能存储字符串常量。
正确的做法是先定义一个字符数组或者动态分配内存,然后再将字符串常量赋值给字符指针变量。例如:
```c
char str[10] = "Hello";
char *p = str; // 将字符数组的首地址赋值给字符指针变量
```
或者使用动态内存分配的方式:
```c
char *p = (char *)malloc(sizeof(char) * 10);
strcpy(p, "Hello");
```
这样就可以正确地使用字符指针变量了。
char str[10];str={“Hello”}对吗
不。在C语言中,字符串是以字符数组的形式表示的,而字符数组在声明时必须指定数组的长度。因此,声明一个长度为10的字符数组可以使用以下语句:
```
char str[10] = "Hello";
```
这里使用了赋值运算符“=”,但是字符数组不能像其他类型的数组一样使用“{}”进行初始化。在声明时,可以直接给出初始化值,也可以在声明后使用strcpy等函数进行赋值。