社区
数据结构与算法
帖子详情
有如下一段代码,问结果是什么?
boge
2001-04-05 12:58:00
int a, b, c ;
int *p1 ;
char *p2 ;
a = 10 ;
b = 20 ;
c = 30 ;
p1 = &a ;
p1++ ;
p2 = (char*) p1 ;
p2++ ;
a = *(int*) p2 ;
问: a = ???
...全文
178
19
打赏
收藏
有如下一段代码,问结果是什么?
int a, b, c ; int *p1 ; char *p2 ; a = 10 ; b = 20 ; c = 30 ; p1 = &a ; p1++ ; p2 = (char*) p1 ; p2++ ; a = *(int*) p2 ; 问: a = ???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Saintking
2001-04-28
打赏
举报
回复
这个是当然的事,不过,如果一次来作为对c++重一些概念的理解,我觉得未尝不可。
但是,初学者,慎重阅读。
jucee
2001-04-27
打赏
举报
回复
a=30,应该是这样的,因为a,b,c分配的空间是连续的。
vochen
2001-04-27
打赏
举报
回复
不要去管什么由编译器决定的内存分配方式,那段程序本身就是有问题的,程序员应该坚决避免写出那样的程序!!!!!!!!!!!!
Saintking
2001-04-27
打赏
举报
回复
更正::::::::::::
xiaolizi(小李子) ::
对于vc编译器,是堆栈方式的
参照上面的内存分配(p2)xxxxxxxx(p1)xxxxxxxx(c)1e000000(b)14000000(c)0a000000
对不起,上面的内存分配有错,那时24位的。不过结果一样的
Saintking
2001-04-27
打赏
举报
回复
要更具编译器的情况来确定的
看注释
int a, b, c ;
int *p1 ;
char *p2 ;
a = 10 ;
b = 20 ;
c = 30 ;
p1 = &a ;
p1++ ; //p1向后移动了sizeof(int)字节,指向了b
p2 = (char*) p1 ; //此时的p2步长位sizeof(char) == 1
p2++ ; //p2向后移动了sizeof(char) == 1个字节
a = *(int*) p2 ; //他得值事b左移8位与c右移24位,也就是30了
但是,在vc编译器中,所有的变量是压栈的,所以,如果把++该为--可以得到(c)1e0000(b)140000(a)0a0000, 结果是 0x1400 == 5120 否则,是不可知的。
问: a = ???
xiaolizi(小李子) ::
int a, b, c ;
int *p1 ;
int *p2 ;
a = 10 ;
b = 20 ;
c = 30 ;
p1 = &c ;
p1++ ; //p1向后移动sizeof(int)个字节,在32位编译器上,就是p1* == p1
p2 = p1 ;
a = *p2 ; //此时,a = p1
p2++ ; //p2向后移动了sizeof(int)个字节,在32位编译器上,就是p2* == p2
a = *p2 ; //a 是p2的值,也就是p2的地址
huang_zhi_x
2001-04-25
打赏
举报
回复
我想是20的高字节和30的低字节.
a,b,c的地址应该是连续分配的.
Rammmui
2001-04-25
打赏
举报
回复
a为10?
ShowMan
2001-04-16
打赏
举报
回复
大家不会没有编译器吧!!
上几十一下不久行了.
softman_2000
2001-04-16
打赏
举报
回复
a 应该是30
leojay
2001-04-16
打赏
举报
回复
我把题目改一下:
int a, b, c ;
int *p1 ;
char *p2 ;
a = 10 ;
b = 20 ;
c = 30 ;
p1 = &c ;
p1++ ;
p2 = (char*) p1 ;
p2+=4;
a = *(int*) p2 ;
a是什么知道吗,它的原理可以解答xiaolizi(小李子)的问题.想一想。
hawkgao
2001-04-11
打赏
举报
回复
0
lang_82
2001-04-11
打赏
举报
回复
如果调试的话,a肯定是个怪数
xiaolizi
2001-04-08
打赏
举报
回复
啊! 我明白了。。。
看来指针真的没学好啊
xiaolizi
2001-04-08
打赏
举报
回复
真~奇~怪
int a, b, c ;
int *p1 ;
int *p2 ;
a = 10 ;
b = 20 ;
c = 30 ;
p1 = &c ;
p1++ ;
p2 = p1 ;
a = *p2 ;
p2++ ;
a = *p2 ;
当做完最后第二步 p2++后为什么p2所指的地址中的值还是20啊???
xycleo
2001-04-06
打赏
举报
回复
上机调试一下就知道拉!!应该是不确定!!!
pikaqiu
2001-04-06
打赏
举报
回复
怎...怎可以这样用之真的?简直是爆殄天物
binghuodao
2001-04-05
打赏
举报
回复
最好不要让指针乱跑,轻则结果错误,重则系统崩溃
Wingsun
2001-04-05
打赏
举报
回复
是啊,你的指针在p1++后就不知道指到哪儿去了.当然a就不确定了.
墨梅无痕
2001-04-05
打赏
举报
回复
不确定
代码
阅读:给定如下Java
代码
,编译运行后,输出结果是什么?请解释原因。
代码
阅读:给定如下Java
代码
,编译运行后,输出结果是什么?请解释原因。
代码
如下: /** * Author:Xu Zheng Wei * E-mail:2518298846@qq.com * 程序功能:定义一个类Base,在类里面定义一个Base方法,下面定义了一个Child并且继承Basse类。 */ package diqizhang; //创建父类; public class Base { public Base(){ System.out.pr
c语言如何注释
一段
代码
,如何在C语言注释
一段
代码
?【C++培训】
在编写程序时,为了使
代码
易于阅读,通常会在实现功能的同时为
代码
加一些注释。注释是对程序的某个功能或者某行
代码
的解释说明,它只在C语言源文件中有效,在编译时会被编译器忽略。C语言中的注释有两种类型,具体如下。1、单行注释单行注释通常用于对程序中的某一行
代码
进行解释,用“∥”符号表示,“/”后面为被注释的内容,具体示例如下:printf("Hello,world\n"); //输出Hello,w...
网页
代码
中的 script type=application/ld+json端
代码
使用后来干什么?
近些天一直在看网页的源
代码
,无意中在一个网站看到这样的
一段
代码
,在头部有
一段
,script type="application/ld+json" ,刚开始没弄明白这段
代码
使用来干什么的,后来听别人说,是百度提供的
一段
代码
,这段
代码
到底有什么作用?后来看了在百度熊掌号里找到了,这段
代码
的信息,原来是做信息推送的,这个网页的头部
代码
如下所示:<!doctype html><html...
python不能隐藏
代码
,python隐藏部分
代码
如何使用python或R抓取网页被隐藏的源
代码
隐藏的源
代码
?不知道你指的是什么?我的理解有两种,一是不在前段显示,但是查看源
代码
时有,二是,异步加载的内容在前端和源
代码
中均看不到,第一种很容易解决,想必你指的时第二种,解决方法有三种: 模拟浏览器,动态获取。python 如何把
一段
语句屏蔽,但是又不删除python中可以用注释屏蔽
一段
语句,具体方法如下,首先打开
一段
python的示例程序:然后单行...
c语言程序编译结果不一样,同
一段
代码
,不同C编译器,输出结果真的会不同啊!!!...
一个奇怪的
问
题啊。写了这么久
代码
,总认为,只要是C编译器,同
一段
代码
总会有相同运行结果的(不考虑随机以及多线程的情况)。但是,今天在百度知道上看到了
一段
代码
,运行结果不同,本来打算直接说——小子,机器出
问
题了吧!!但是,抱着治学严谨的态度,我对本段
代码
进行了测试,发现结果出乎意料。。先看这段
代码
吧。#includevoid fun();int main(){fun();return 0;}void...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章