amobbs.com 阿莫电子技术论坛

标题: 跟大家请教一下(int)( *( ( int * ) &a ) ) [打印本页]

作者: hck2llj    时间: 2013-11-22 14:34
标题: 跟大家请教一下(int)( *( ( int * ) &a ) )
如题,我这里使用的环境是:long是32位的,而int是16位的。
==================================
unsigned long a;
a = a - (unsigned int)(*(( unsigned  int *)&a)) ;
==================================
求解释这个(int)( *( ( int * ) &a ) ) ,到底是一个什么样子的变量。
真心求解,这个问题困扰我很久了。
作者: hck2llj    时间: 2013-11-22 14:34
自己顶一下
作者: qlb1234    时间: 2013-11-22 14:49
耐心看完這篇文章,你就懂了。
Everything you need to know about pointers in C
作者: kayatsl    时间: 2013-11-22 14:50
转成了 uint *指针后取值, 还要强转一次uint 这不是破来一次后还要破的节奏麽..
作者: kinsno    时间: 2013-11-22 15:16
这个是么子意思?
自个玩自个?
楼主你这句话从哪弄过来的,还是你就想弄懂这是什么意思?还是想要干嘛,你的目的是?
作者: 关于以后    时间: 2013-11-22 15:18
一步一步来么。
(int)( *( ( int * ) &a ) )
&a : 取a的地址, 即得到一个指向long类型的指针。
( int * ) &a : 强制转换指针类型 , 将一个指向long类型的指针,强制转换为指向int类型的指针。
*( ( int * ) &a ) :取数据, 取出指向int类型的指针,所指向的数据。
(int)( *( ( int * ) &a ) )  :强制转换数据类型, 强制转换数据类型为 int型。 按理说这步可以不要么,前面一步已经是取int指针指向的数据了,出来肯定是int型的数据。

作者: hck2llj    时间: 2013-11-22 15:18
kinsno 发表于 2013-11-22 15:16
这个是么子意思?
自个玩自个?
楼主你这句话从哪弄过来的,还是你就想弄懂这是什么意思?还是想要干嘛,你 ...

这个问题其实应该和我刚才发的另一个帖子放在一起,只是今天一整天都昏沉沉的。
孔子说过:中午不睡,下午崩溃。另一个帖子是:
http://www.amobbs.com/forum.php? ... p;page=1#pid7135733
作者: hck2llj    时间: 2013-11-22 15:19
qlb1234 发表于 2013-11-22 14:49
耐心看完這篇文章,你就懂了。
Everything you need to know about pointers in C

好,我会留着仔细看的。
作者: hck2llj    时间: 2013-11-22 15:21
关于以后 发表于 2013-11-22 15:18
一步一步来么。
(int)( *( ( int * ) &a ) )
&a : 取a的地址, 即得到一个指向long类型的指针。

我是参考的一个工程师写的代码,它用这种方法获得了逐次逼近目标值的过程值。
具体见我发的另一个帖子,这个是我的问题。帖子链接在楼上有了
作者: hck2llj    时间: 2013-11-22 15:21
kayatsl 发表于 2013-11-22 14:50
转成了 uint *指针后取值, 还要强转一次uint 这不是破来一次后还要破的节奏麽.. ...

kayatsl大神一向这么重口味,具体我也不知道是什么回事。
作者: cmheia    时间: 2013-11-22 15:27
尼 →      &a        → 引用(这是指针长度不知道啊)
玛 →   ( int * )尼  → 对int的引用
德 →    *( 玛 )     → 解引用了,现在是int了(16bit)
指 →  (int)( 德 )   → 这一步貌似多余了

设:
变量a存储在地址1h开始的地址中,如“图”所示。

                   地址
┏━━━━┓
┃            ┃ 0h
┣━━━━┫
┃   12b    ┃ 1h  ← 尼(16/32傻傻不清楚)
┣━━━━┫
┃   34h    ┃ 2h
┣━━━━┫
┃   56h    ┃ 3h
┣━━━━┫
┃   78h    ┃ 4h
┣━━━━┫
┃            ┃ 5h
┗━━━━┛

则:
        a的值                        指
大端    12345678h       1234h
小端    78563412h       3412h

做题速度略慢…看来今晚要吃好点了…
作者: hck2llj    时间: 2013-11-22 15:29
cmheia 发表于 2013-11-22 15:27
尼 →      &a        → 引用(这是指针长度不知道啊)
玛 →   ( int * )尼  → 对int的引用
德 →    *( ...

还没看懂,不过先谢谢大神。
晚上回去我会好好研究一下
作者: 绿茶山人    时间: 2013-11-22 16:52
cmheia 发表于 2013-11-22 15:27
尼 →      &a        → 引用(这是指针长度不知道啊)
玛 →   ( int * )尼  → 对int的引用
德 →    *( ...

“尼玛的指尼玛的”, 呵呵,太油菜了!
作者: cmheia    时间: 2013-11-22 17:13
绿茶山人 发表于 2013-11-22 16:52
“尼玛的指尼玛的”, 呵呵,太油菜了!

嘿嘿,指针往复杂了写最讨厌了
作者: kenson    时间: 2013-11-22 17:23
老实说我也看不懂,回家慢慢看
作者: 绿茶山人    时间: 2013-11-22 17:47
cmheia 发表于 2013-11-22 17:13
嘿嘿,指针往复杂了写最讨厌了

就是!能简单的完成干嘛复杂完成,没事找事,炫耀吗?小心丹尼斯找上门!
作者: ibichao    时间: 2013-11-22 19:18
从里往外扒皮




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4