*p=(person*)info[i]; 并解决程序运行报错//输入三个人的编号和姓名,并输出struct person{char no[6]; //编号char name[10];//姓名 };int main(int argc,char* argv[]){int len=3; //共三个人char info[10];\x05for(int i=0;i

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/21 19:58:09
*p=(person*)info[i];并解决程序运行报错//输入三个人的编号和姓名,并输出structperson{charno[6];//编号charname[10];//姓名};intmain(

*p=(person*)info[i]; 并解决程序运行报错//输入三个人的编号和姓名,并输出struct person{char no[6]; //编号char name[10];//姓名 };int main(int argc,char* argv[]){int len=3; //共三个人char info[10];\x05for(int i=0;i
*p=(person*)info[i]; 并解决程序运行报错
//输入三个人的编号和姓名,并输出
struct person{
char no[6]; //编号
char name[10];//姓名
};
int main(int argc,char* argv[])
{
int len=3; //共三个人
char info[10];
\x05for(int i=0;i

*p=(person*)info[i]; 并解决程序运行报错//输入三个人的编号和姓名,并输出struct person{char no[6]; //编号char name[10];//姓名 };int main(int argc,char* argv[]){int len=3; //共三个人char info[10];\x05for(int i=0;i
他原意是想用指针数组存储 new 出来的这些 person 对象,但是由于每个元素都是 char 型(因为声明的是 char info[10] 的数组),而将 person *p = new person; 这个指针p赋给它,强制类型转换后赋给数组的元素会发生精度丢失,因为指针变量在32位机器里占4字节,而 char 变量只有1字节内存空间,所以在第二个循环中取出数组元素的值再强制转换成person的指针类型,其值已经不对了.
所以修改的方法是,直接将 char info[10]; 修改为 person *info[10]; 那么后面第二个 for 循环输出的时候也不需要做强制转换了.