能力值:
( LV3,RANK:30 )
|
-
-
2 楼
翻了一下才你的精华才看到,顶一下(你已经是大牛了)
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
路过 看过 标记
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
#include "stdio.h"
#include "stdlib.h"
int main()
{
char a[2]={3,6};
for(int i=0;i<sizeof(a);i++)
{
[COLOR="Red"]printf("%d\n",*(a+i));[/COLOR] }// 改
return 0;
}
这篇文章有错吧。
‘*’的优先级要高于‘+’
LZ的文章之所以结果正确是因为 取的值巧合如果不是 char [2] = {1,2} ;
结果想当然。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
ls正解, lz写错了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
确实,*号优先级要高
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
来学习的.......
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
指针是人的日常生活里广大人名群众喜闻乐见的一种思维方式!------倒
发现一个错别字“名”->“民”。楼主写的不错,嘎嘎!
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
前排留名,小弟受教了。
|
能力值:
( LV11,RANK:180 )
|
-
-
10 楼
你那个类型哦。。。定义的BYTE型 却用 mov eax,[esi] 还是 mov al,byte ptr [esi]好一些
那个 WORD 型的有问题吧 怎么 add esi,4 呢? WORD型不是两字节?
.data
Array db 'Hello WOrld',0
.code
lea esi, Array
@@:
lodsb
; al == Array[i]
or al,al
jne @B
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
总结的不错,很有意义
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
4楼应该是理解错了 #include <stdio.h> #include <stdlib.h> int main(){ char a[2]={1,2}; for(int i=0;i<sizeof(a);i++){ printf("%d\n",*a+i); //这里是先取a的地址在加i,在变量前面的不在是一元操作符而是指针 先取到a的地址0加1后输出结果变为1和2,从而不是输出0和1 } }
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
说错了,应该是"*"在单个变量前不是一元操作符 而是指针引用
最后于 2020-2-1 00:33
被薛定谔消失的弦编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
把数组里的值换成1和3看看结果,难道*的优先级不是大于+?a[i]=*(a+i),这里的括号很有必要
最后于 2020-2-1 08:56
被htpidk编辑
,原因:
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
10年的老帖子复活了
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
htpidk
把数组里的值换成1和3看看结果,难道*的优先级不是大于+?a[i]=*(a+i),这里的括号很有必要
你把数组里的1和3换成,2和6看看 看一下是不是在指针a(数值2)的基础上加i(数值1)覆盖到ds:[1]内存快上。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
没有细看你发的,指针优先级是要高于加号的 *(a+i)则是先取地址a的值后再加上for循环i的值 这时候就可以表述第一个是段地址[0],第二个i值则是段地址+偏移地址[1]
|
能力值:
( LV1,RANK:0 )
|
-
-
18 楼
应该是 *(a+i),指针优先级应高于+操作符。
|
能力值:
( LV3,RANK:20 )
|
-
-
19 楼
哥们你那个改成这样:*(char*)(&a)+i,数组直接用还是取地址符取地址都是一样的吗我看驱动里像大哥这么写必蓝
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
逆向爱好者
哥们你那个改成这样:*(char*)(&a)+i,数组直接用还是取地址符取地址都是一样的吗我看驱动里像大哥这么写必蓝
卧槽越写越复杂,别酱
|
能力值:
( LV3,RANK:20 )
|
-
-
21 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
22 楼
|
|
|