为什么数组初始化没有赋值就必须使用strcpy或者一个一个的赋值
#include <stdio.h>
#include <string.h>
struct student
{
int num;
char name[20];
short age;
}stu1;
int main(int argc, const char *argv[])
{
char name[4] = "冯";
printf ("%s \n",name);
/*
当声明变量stu3的时候,编译器分配了字符数组的
空间,但是因为数组的变量名是一个被const修饰
相当于:char * const name;
的指针常量;所以只有三种赋值方式:
1.在声明结构体变量初始化的时候直接赋值,如:
struct student stu2 = {888888,"Fengyuchen",8};
我认为初始化赋值的过程类似于使用了strcpy函数;
2.使用strcpy函数将字符串cp到数组指针所指向的
空间内;如:
strcpy(stu3.name,"Fengyushen");
3.一个一个的手动赋值;如:
stu1.name[0] = 'F';
stu1.name[1] = 'e';
stu1.name[2] = 'n';
.
.
.
*/
struct student stu2 = {
888888,"Fengyuchen",8};
struct student stu3;
printf("%p %p %p %p\n",&stu2,&stu2.num,&stu2.name,&stu2.age);
printf("%p %p %p %p\n",&stu3,&stu3.num,&stu3.name,&stu3.age);
stu3.num = 666666;
strcpy(stu3.name,"Fengyushen");
stu3.age = 4;
printf("%d %s %d\n",stu2.num,stu2.name,stu2.age);
printf("%d %s %d\n",stu3.num,stu3.name,stu3.age);
return 0;
}
//*************
//输出结果
//*************
原因分析: