如图解释一下代码输出得到的答案?
2个回答
2020-11-18 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!全部是120,首先分析下,System.out.println(b.getM());当运行到此处的时候,上面的B b=new B();b.m=20;两行代码已经为B的对象b中的属性字段m赋值为20,此时再调用b.getM()就是运行下面的程序int getM(){return m+100;}返回的结果自然是120,之后在A a=b;这段代码中,是将子类的对象b赋给了父类的对象a其实就是,父类的对象a也指向了子类b的对象。这个时候 a.m=-100;只是给a中的属性字段m设了初值为-100,到这一行的时候,System.out.println(a.getM());a其实指向的是子类对象b,所以a.getM()就等同于b.getM(),而b中的m=20,继续返回120.最后一个一样!!!有点抽象。。。希望你能理解!Debug的时候Eclipse必须把对象保存起来,然后等待你的操作,在保存对象的时候会为每个对象分配ID进行分辨,你可以进入debug模式跟踪下程序,可以看出系统给a,b分配的ID是一样的额!非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
展开全部
char arr[]={'a','b','c','d','e','f'};
printf("%d\n",sizeof(arr)); //6
arr是一个字符数组(也是字符数组的首地址),对数组sizeof获得的是它的元素个数,包含6个元素a~f,所以结果是6
printf("%d\n",sizeof(arr+0));//4
arr+0,这是一个运算,是一个指针与一个整数相加,运算结果仍为指针。指针长度为32位整数,即4个字节。
printf("%d\n",sizeof(*arr));//1
arr是一个指针,*arr是取这个指针的内容,返回的是第一个数组元素字符a,单字节字符的sizeof值为1
printf("%d\n",sizeof(arr[1]));//1
arr[1]是标准的数组下标运算,返回的是第二个元素字符b,同样这个字符长度为1
printf("%d\n",sizeof(&arr));//4
arr是一个指针,对指针本身取地址操作仍然是指针,长度是32位的,同样4个字节
printf("%d\n",sizeof(&arr+1));//4
arr是一个地址,&arr同样是一个地址,地址加1后仍然为指针,4字节。
printf("%d\n",sizeof(&arr[0]+1));//4
arr【0】是一个数组元素b,&arr[0]是它的地址,地址加1后仍然为指针,4字节。
printf("%d\n",sizeof(arr)); //6
arr是一个字符数组(也是字符数组的首地址),对数组sizeof获得的是它的元素个数,包含6个元素a~f,所以结果是6
printf("%d\n",sizeof(arr+0));//4
arr+0,这是一个运算,是一个指针与一个整数相加,运算结果仍为指针。指针长度为32位整数,即4个字节。
printf("%d\n",sizeof(*arr));//1
arr是一个指针,*arr是取这个指针的内容,返回的是第一个数组元素字符a,单字节字符的sizeof值为1
printf("%d\n",sizeof(arr[1]));//1
arr[1]是标准的数组下标运算,返回的是第二个元素字符b,同样这个字符长度为1
printf("%d\n",sizeof(&arr));//4
arr是一个指针,对指针本身取地址操作仍然是指针,长度是32位的,同样4个字节
printf("%d\n",sizeof(&arr+1));//4
arr是一个地址,&arr同样是一个地址,地址加1后仍然为指针,4字节。
printf("%d\n",sizeof(&arr[0]+1));//4
arr【0】是一个数组元素b,&arr[0]是它的地址,地址加1后仍然为指针,4字节。
追问
感谢感谢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询