@[Akiraku](/user/1111227) 你定义的是字符数组,字符串数组是`string ss[1000000][10];`
by Mo默Sh笙 @ 2023-11-15 11:44:09
c语言没有 `string` 啊喂。
by ShwStone @ 2023-11-15 11:48:32
@[Mo默Sh笙](/user/189485) c 语言没有 string
by DioxygenDifluoride @ 2023-11-15 11:48:37
@[Akiraku](/user/1111227) strcpy(ss[0],"abc")
by DioxygenDifluoride @ 2023-11-15 11:49:31
@[Akiraku](/user/1111227) c语言的字符数组只有在定义的时候才能赋值。字符数组中的每一个元素实际上仍然是字符,只有整个最后一维连在一起才是字符串。指定除了最后一维之外的维度就可以获得字符串的指针。
大概像这样:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char ss[100][10] = {
"abc"
};
printf("%s\n", ss[0]);
return 0;
}
```
by ShwStone @ 2023-11-15 11:54:11
如果你想要在定义之后赋值,可以使用 `memcpy` `strcpy` `sprintf` 之类的函数,但是是不支持直接赋值的。
```c
char a[10], b[10] = "abc";
memcpy(a, b, sizeof a);
strcpy(a, "abc");
sprintf(a, "abc");
```
by ShwStone @ 2023-11-15 11:56:35
另外一提,用引号括起来的字符串在c语言中就是 `const char *`,代表者一个指向常量字符串开头的字符指针。而你定义的字符串实际也应该被看成指针,在对 `char a[10] = "abc"` 赋值的时候,并不是对 `a[0],a[1],a[2]` 赋值,而应该理解为对于指针 `(char *)a` 做了赋值。
by ShwStone @ 2023-11-15 11:59:42
指针之类的是c语言的精髓,初学看不懂也是很常见的,可以多去看看C语言的教材
by ShwStone @ 2023-11-15 12:01:00
@[DioxygenDifluoride](/user/260985) az原来是C语言,我想当然了
by Mo默Sh笙 @ 2023-11-15 12:45:49
@[ShwStone](/user/491204) “指定除了最后一维之外的维度就可以获得字符串的指针。” 意思是定义字符数组的时候给除了最后一维的其他维赋值吗?
by Akiraku @ 2023-11-16 14:31:37