不能直接把字符串赋值给字符数组

解释

  • 在C语言中,使用赋值操作符直接将字符串赋值给字符数组是一种特殊的用法。当使用赋值操作符将字符串赋值给字符数组时,编译器会自动将字符串的字符逐个拷贝到字符数组中,并在最后自动添加一个空字符(\0)作为字符串的结束符。

  • 例如,您提到的 char name[10] = "hello" 这种写法是合法的,它将字符串 "hello" 的内容逐个拷贝到长度为 10 的字符数组 name 中,并在数组末尾添加了一个空字符。

  • 这种用法只能在初始化时使用,而不能在其他地方使用赋值操作符将一个字符串赋值给已经声明的字符数组(比如定义了一个结构体,结构体里有字符数组,接下来给结构体中的字符数组赋值的时候,不能直接赋值一个字符串给它)。如果需要在其他地方对字符数组赋值,仍然需要使用字符串处理函数(如 strcpy)来拷贝字符串内容。

  • 定义完数组以后只能根据下标来赋值,不能一次写好多。

示例

#include

struct student {
	int num;
	char name[15];
	float score;
};

int main(int argc,char *argv[])
{
	struct student stu;
	
	stu.num = 111;
	stu.name = "cuiyijin";//下面有讲解
	stu.score = 100;

	printf("学号为:%d\n",stu.num);
	printf("名字为:%s\n",stu.name);
	printf("分数为:%d\n",stu.score);

	return 0;
}

比如在上述代码中唯一注释的那一行代码是错的,就是因为上面讲述的只能在初始化的时候赋值给数组,而不能在后面直接赋值。如果真的需要,可以使用 strcpy 函数,把想赋值的当作参数传到这个函数里。

你可能感兴趣的:(开发语言,c语言)