avatar
.002 dollars = .002 cents# Joke - 肚皮舞运动
f*l
1
日前英美两国联合进行的一项调查显示,每对夫妻每日花在家务琐事上的争吵平均
竟达到40分钟,而其中争吵的“最大项”则是由随处乱丢的衣服鞋袜引起!
据英国《每日邮报》1月6日报道,这项调查由英国“eSure”保险公司和美国密
苏里大学的研究人员联合发起进行,结果表明,一对夫妻每年因琐碎的家务事所引
起的吵架多达135起。
调查显示,多达35%的受访民众表示乱扔衣物最招人烦,由此引发的嘴仗最多;
28%的人称“另一半”干家务拖拖拉拉最让人恼火;另有24%的受访人说刷碗收拾厨
房真的很让人纠结,经常为此干仗。此外,有10%的女性受访者表示,老公在小便完
了总是不把马桶座放下来,这让她们非常恼怒,想控制住与对方开战的冲动也不行

那么,夫妻想不干家务时都会选择哪些借口呢?调查称,29%的人当然都是以工
作忙为借口,24%的人会责怪自己的孩子不分担家务,还有11%的人竟然说宠物才是
家庭如此凌乱的罪魁祸首,真是让人哭笑不得。 中国日报
avatar
h*n
2
给了一段代码,问是干什么的?
void foo(int *p1, int val1, int val2)
{
int *p2, *p3;
p2 = (int *)0x12fec8;
*p2 = val1;
p1 = (int *)*p2;
for (int i=1; i<10; i++)
{
p2 = (int *)0x12fec8;
*p2 = val1;
p3 = (int *)*p2;
val1+=sizeof(int);
*p3 = val2;
}
}
编译跑了一下也没看出这个代码是干啥的。求指教
avatar
j*y
4
感觉是给 一个 int[9] 的 array 里面的每个成员赋值为val2.
这个 array的 起始地址是 (int *)val1

【在 h****n 的大作中提到】
: 给了一段代码,问是干什么的?
: void foo(int *p1, int val1, int val2)
: {
: int *p2, *p3;
: p2 = (int *)0x12fec8;
: *p2 = val1;
: p1 = (int *)*p2;
: for (int i=1; i<10; i++)
: {
: p2 = (int *)0x12fec8;

avatar
b*n
5
兄弟,看看日期,五年前的老帖子了
avatar
h*n
6
我特意跑了一下程序
void foo(int *p1, int val1, int val2)
{
int j;
int *p2, *p3;
int * buf1 = (int*)malloc(sizeof(int)*20);
for(int j =0;j<20;j++)
buf1[j] = 1;
p2 = (int *)buf1;
//val1放到0x12fec8地址也就是当前p2指针指向的位置
*p2 = val1;
//把p1指向val1地址所指向的位置
p1 = (int *)*p2;
for (int i=1; i<10; i++)
{
p2 = (int *)buf1;
*p2 = val1;
p3 = (int *)*p2;
val1+=sizeof(int);
*p3 = val2;
}
printf("buf1:");
for(j =0;j<20;j++)
printf(" %d ",buf1[j]);
printf("\n");
}
int main()
{
int i = 1;
int j = 0;
int * buf2 = (int*)malloc(sizeof(int)*20);
for(j =0;j<20;j++)
buf2[j] = 2;
int * buf3 = (int*)malloc(sizeof(int)*20);
for(j =0;j<20;j++)
buf3[j] = 3;
foo(&i, (int)buf2, (int)buf3);
printf("buf2:");
for(j =0;j<20;j++)
printf(" %d ",buf2[j]);
printf("\n");
printf("buf3:");
for(j =0;j<20;j++)
printf(" %d ",buf3[j]);
printf("\n");
getchar();
return 0;
}
结果输出:
buf1: 4724008 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
buf2: 4724120 4724120 4724120 4724120 4724120 4724120 4724120 4724120
47
24120 2 2 2 2 2 2 2 2 2 2 2
buf3: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
还是看不懂这个是干啥的。。请指教

【在 j*****y 的大作中提到】
: 感觉是给 一个 int[9] 的 array 里面的每个成员赋值为val2.
: 这个 array的 起始地址是 (int *)val1

avatar
G*e
7

你看过了?

【在 b*****n 的大作中提到】
: 兄弟,看看日期,五年前的老帖子了
avatar
y*9
8

2L说的对啊 for里面做的就是pointer加法 地址每次增加一个int的量

【在 j*****y 的大作中提到】
: 感觉是给 一个 int[9] 的 array 里面的每个成员赋值为val2.
: 这个 array的 起始地址是 (int *)val1

avatar
b*n
9
五年前就看过了,不过还是继续跟了verizon五年

【在 G******e 的大作中提到】
:
: 你看过了?

avatar
h*n
10
明白了。。。多谢。。指针看得头晕,程序结果也验证了你的说法

【在 j*****y 的大作中提到】
: 感觉是给 一个 int[9] 的 array 里面的每个成员赋值为val2.
: 这个 array的 起始地址是 (int *)val1

avatar
p*2
11
为什么程序敢用这个地址0x12fec8
avatar
U*5
12
同疑惑中。

【在 p*****2 的大作中提到】
: 为什么程序敢用这个地址0x12fec8
avatar
j*y
13
有什么 特别的吗?

【在 p*****2 的大作中提到】
: 为什么程序敢用这个地址0x12fec8
avatar
U*5
14
这样初始化出来的地址是在stack上还是在heap上?
感觉很二啊。

【在 j*****y 的大作中提到】
: 有什么 特别的吗?
avatar
p*2
15

不能随便指定内存地址吧。这个内存要是别人在用的怎么办?

【在 j*****y 的大作中提到】
: 有什么 特别的吗?
avatar
U*5
16
vs2010上跑了跑,第6行立马access violation.

【在 p*****2 的大作中提到】
:
: 不能随便指定内存地址吧。这个内存要是别人在用的怎么办?

avatar
p*2
17

感觉AV挺正常的。不是自己的memory。

【在 U***5 的大作中提到】
: vs2010上跑了跑,第6行立马access violation.
avatar
h*n
18
最近在看嵌入式的面试题 嵌入式里面经常需要针对某个硬件地址作赋值所以这里就考
这个 不过这段代码故意写的乱来考察基本功

为什么程序敢用这个地址0x12fec8
★ Sent from iPhone App: iReader Mitbbs Lite 7.56

【在 p*****2 的大作中提到】
: 为什么程序敢用这个地址0x12fec8
avatar
b*n
19
embedded system 和 lower level driver 什么的常常会用特定地址。不过通常要有个
global memmap 以确保没有地址冲突。就这段代码而言只是看指针操作清不清楚而已。
avatar
B*1
20
是的,很正常。

【在 b*****n 的大作中提到】
: embedded system 和 lower level driver 什么的常常会用特定地址。不过通常要有个
: global memmap 以确保没有地址冲突。就这段代码而言只是看指针操作清不清楚而已。

avatar
k*x
21
就是从指定外设的寄存器读/写数据到内存

【在 h****n 的大作中提到】
: 最近在看嵌入式的面试题 嵌入式里面经常需要针对某个硬件地址作赋值所以这里就考
: 这个 不过这段代码故意写的乱来考察基本功
:
: 为什么程序敢用这个地址0x12fec8
: ★ Sent from iPhone App: iReader Mitbbs Lite 7.56

avatar
b*g
22
函数一共三个参数
貌似是执行完就在地址0x12fec8那里存一个整数,值为val1。
又在地址为val1的地方连着整出来9个int那么,这9个地方存的都是整数val2.
但是我不懂为什么p1也是参数呢?
在函数内部,p1指向的是地址为val1的地方,这里存着第一个val2.
那函数执行完了,p1作为形参指向的地方就可能不是地址val1啦,
那位什么还要把p1作为函数参数呢?
函数里面p1从来就没出现在等号右边,
p1出现在等号左边就一次,也不带型号,所以也不能传值啊。
那这个p1就毫无用处,等于说函数执行完了,函数外的p1还无改变,*p1也无改变。
难道出现这个p1就是为了考考动不动指针?

【在 h****n 的大作中提到】
: 给了一段代码,问是干什么的?
: void foo(int *p1, int val1, int val2)
: {
: int *p2, *p3;
: p2 = (int *)0x12fec8;
: *p2 = val1;
: p1 = (int *)*p2;
: for (int i=1; i<10; i++)
: {
: p2 = (int *)0x12fec8;

avatar
p*2
23
这样呀。上边几位大牛能谈谈embeded的职业前景吗?
avatar
h*n
24
感觉你说的对,p1完全没啥用处,出了函数p1的值不会被改变
0x12fec8地址存的是9个连续int的最后一个的地址
可能是用来便于下一次连续放9个val2的操作吧
这个题有个follow up说怎么精简代码,我瞎写了一个如下
void foo(int val1, int val2)
{
int step = sizeof(int);
for(int i=0;i<9;i++)
{
*((int *)val1) = val2;
val1 += step;
}
*((int *)0x12fec8) = val1 - step;
}

【在 b****g 的大作中提到】
: 函数一共三个参数
: 貌似是执行完就在地址0x12fec8那里存一个整数,值为val1。
: 又在地址为val1的地方连着整出来9个int那么,这9个地方存的都是整数val2.
: 但是我不懂为什么p1也是参数呢?
: 在函数内部,p1指向的是地址为val1的地方,这里存着第一个val2.
: 那函数执行完了,p1作为形参指向的地方就可能不是地址val1啦,
: 那位什么还要把p1作为函数参数呢?
: 函数里面p1从来就没出现在等号右边,
: p1出现在等号左边就一次,也不带型号,所以也不能传值啊。
: 那这个p1就毫无用处,等于说函数执行完了,函数外的p1还无改变,*p1也无改变。

avatar
n*e
25
感觉你原贴的代码是实际工作的时候凑出来的。如果没有那个p1,可能p2会直接被编译
器optimize掉。
仅仅是感觉。

【在 h****n 的大作中提到】
: 感觉你说的对,p1完全没啥用处,出了函数p1的值不会被改变
: 0x12fec8地址存的是9个连续int的最后一个的地址
: 可能是用来便于下一次连续放9个val2的操作吧
: 这个题有个follow up说怎么精简代码,我瞎写了一个如下
: void foo(int val1, int val2)
: {
: int step = sizeof(int);
: for(int i=0;i<9;i++)
: {
: *((int *)val1) = val2;

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。