1分 |
数组不能整体赋值,请使用strcpy或者memcpy
|
复习一下数组先。
|
|
10分 |
数组名被看成常量,不能直接赋值
|
5分 |
我记得某书是用盒子比喻指针,我也试试看。
1.有一个密封的盒子,叫Pepole.name,它恒定有20个格子,每个格子有一张纸条,这些纸条上写着一个位置,传说这些位置上也有盒子,并且这些盒子可以存放一个叫char的珠宝; 2.有一个不密封的盒子,叫name,他没有固定个数的格子,但里面也有很多纸条,同样这些纸条上写着位置,传说这些位置上也有盒子,这些盒子里放着许多有用的宝石(中世纪魔法宝石?); 3.魔法师叫学徒将2中的宝石复制一份放到1中的盒子里去(1中盒子里的珠宝自然就扔掉了),但学徒不解其意,企图将name这个盒子里的纸条,放到叫Pepole.name中去,结果,那个盒子是密封的,魔法无效……所以楼主束手无策。 |
刚开始学的时候感觉这样应该可以,其实不行的,memcpy吧,看下这个函数
|
|
People(char * name){ this->name=name; } 主要是People的属性是char name[],而不是指针char *name,所以this->name = ??其实是向数组赋值,有一点需要注意,数组是不可以作为左值的。所以,若People的属性是char name[],是不可以直接赋值的。你可以通过strcpy/strncpy/memcpy等函数替换上面的这条语句:this->name = name; |
|
string用=
char []用strcpy且最好用strncpy 声明了一个类People,属性有char name[20]; |
|
memcpy()
|
|
this->name是不是数组名啊 那样是不行的 它只是一个常量 用楼上说的方法吧
|
|
1分 |
this->name其实是一个地址,你再给地址赋值,肯定是错的,只能去给这个地址放内容。
|
2分 |
People(char * name){ strcpy(this->name, name); //数组不能直接赋值。。用strcpy。。 } |
基础知识都没掌握好啊
|
|
|
|
3分 |
正解! |
2分 |
用strcpy有越界访问的风险。
|
内存的操作,的确用cpy比较好点
|
|
情何以堪。。。。。
|
|
2分 |
this->name=name;相当于改变了数组name[]的首地址,
在C里, 数组一旦定义, 其起始地址不可改变 |
5分 |
数组不能给变量赋值,数组是存储数据的容器
|
2分 |
数组名作为成员变量,拥有魔法免疫和抗性皮肤等技能,只能使用物理攻击或是化学攻击什么的 |
5分 |
strcpy() 或者memcpy()
记得判断name的长度 |
2分 |
C/C++ code
People(char * name){ 12楼正解 |
原来C++的世界,并不孤单。
|
|
8楼才是正解呐! People people("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 试试看! |
|
比喻挺有意思的,不知道是哪本书上的 |