能力值:
( LV3,RANK:20 )
|
-
-
26 楼
传递指针,可以免去内存的相互拷贝,提升速度~
|
能力值:
( LV5,RANK:60 )
|
-
-
27 楼
是啊,很简单,不点不通。思想没转过来就很难理解,坛友告知指针即内存就明白了。被书上和各种教程忽悠了。说指针多么多么难。。。。小马过河,自己试才知道深浅啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
搞外挂你就知道指针多么方便了
|
能力值:
( LV3,RANK:20 )
|
-
-
29 楼
指针是记录对象位置的变量。从计算机语言的功能讲,不是必须的,即使语法上不定义指针,也不影响语言表达功能的正确性。完全可以把普通变量当指针来用,只是这样会有诸多不便,例如:
1、要访问一个对象的成员变量,程序员需要手动计算其相对地址,然后才能找到该变量,对象结构的微小变化,相对地址也会发生变化,从而你的程序需要修改的地方比较多。但如果使用指针,会方便许多,成员变量相对地址的计算,全部由编译器帮你完成,即使对象结构变化,成员变量的寻址在形式上没有变化。
2、函数指针如果使用普通变量,似乎C/C++还真不容易实现。
指针被独立抽象出来,确实可以极大的方便程序员编程。
|
能力值:
( LV12,RANK:270 )
|
-
-
30 楼
[QUOTE=sentaly;1366227]新手自学,只有汇编基础,学C语言学了很长时间了。
每个人都说指针是C的灵魂,指针很厉害。
可是我为什么感觉指针根本没必要存在?
指针实质是变量,比如:
char a[10];
char *p=&a;
既然a[0]可以访问数组了,为什么一定...[/QUOTE]
char a[10]; char *p=&a;
你确定这样写正确?
数组的实现就是依靠指针。而C++里面的引用本身也是指针的应用。
其实抛开语言,指针这东西实际上是和指令执行息息相关的,汇编看多了,就会发现处处是指针。
|
能力值:
( LV5,RANK:60 )
|
-
-
31 楼
谢谢
|
能力值:
( LV5,RANK:60 )
|
-
-
32 楼
有问题吗?这样写
一时没转过来。汇编到处是地址。换个说法就不懂了。
好像是有问题,a本来就是指向数组的首地址了。再取地址&就不对了。如果上面是变量就不会有这个问题了。
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
主要理解指针的思想,指针用起来非常灵活,也非常方便
|
能力值:
( LV17,RANK:797 )
|
-
-
34 楼
灵活的操作内存,比如让你把一个缓冲区的某个地方按整数输出,没有指针很难做,一堆位移,你喜欢吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
{
int i = 1;
add(i);
printf("%d\n",i);
add_p(&i);
printf("%d\n",i);
}
void add(int i){
i+=1;
}
void add_p(int *i){
(*i)+=1;
}
这个c里不用指针就做不到了吧。
简单的代码 3个错误 我还是回去看书吧
{
int i = 1;
add(i);
printf(%d\n",i);
add_p(&i);
printf(%d\n",i);
}
void add(int i){
i+=1;
}
void add_p(int *i){
(*p)+=1;
}
|
能力值:
( LV6,RANK:90 )
|
-
-
36 楼
王爽的汇编->11頁
在汇编这门课中,我们所面对的是内存地址空间
指针面对的是内存地址空间
char a[10];
char *p=a;
那你能把显存B8000h设给 a[] 吗?
a[]=&0xB8000 ------??????
|
能力值:
( LV4,RANK:50 )
|
-
-
37 楼
比如链表,或者HOOK,需要写一些内存
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
肯定需要指针啥,这关系的编译器的优化等等,比如说函数指针,可以隐藏函数,如果不动态调试,想破解你程序的人根本就不知道调用了那个函数
|
|
|