首页
社区
课程
招聘
关于C语言中必须要用到指针的讨论
发表于: 2015-4-20 11:34 9095

关于C语言中必须要用到指针的讨论

2015-4-20 11:34
9095
收藏
免费 0
支持
分享
最新回复 (37)
雪    币: 266
活跃值: (44)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
26
传递指针,可以免去内存的相互拷贝,提升速度~
2015-4-20 16:15
0
雪    币: 20
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
27
是啊,很简单,不点不通。思想没转过来就很难理解,坛友告知指针即内存就明白了。被书上和各种教程忽悠了。说指针多么多么难。。。。小马过河,自己试才知道深浅啊。
2015-4-20 16:17
0
雪    币: 189
活跃值: (889)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
搞外挂你就知道指针多么方便了
2015-4-20 16:30
0
雪    币: 62
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
29
指针是记录对象位置的变量。从计算机语言的功能讲,不是必须的,即使语法上不定义指针,也不影响语言表达功能的正确性。完全可以把普通变量当指针来用,只是这样会有诸多不便,例如:
1、要访问一个对象的成员变量,程序员需要手动计算其相对地址,然后才能找到该变量,对象结构的微小变化,相对地址也会发生变化,从而你的程序需要修改的地方比较多。但如果使用指针,会方便许多,成员变量相对地址的计算,全部由编译器帮你完成,即使对象结构变化,成员变量的寻址在形式上没有变化。
2、函数指针如果使用普通变量,似乎C/C++还真不容易实现。
指针被独立抽象出来,确实可以极大的方便程序员编程。
2015-4-20 16:37
0
雪    币: 233
活跃值: (285)
能力值: ( 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++里面的引用本身也是指针的应用。
其实抛开语言,指针这东西实际上是和指令执行息息相关的,汇编看多了,就会发现处处是指针。
2015-4-20 16:45
0
雪    币: 20
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
31
谢谢
2015-4-20 16:52
0
雪    币: 20
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
32
有问题吗?这样写

一时没转过来。汇编到处是地址。换个说法就不懂了。

好像是有问题,a本来就是指向数组的首地址了。再取地址&就不对了。如果上面是变量就不会有这个问题了。
2015-4-20 16:56
0
雪    币: 2705
活跃值: (2151)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
33
主要理解指针的思想,指针用起来非常灵活,也非常方便
2015-4-20 23:11
0
雪    币: 6910
活跃值: (9049)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
34
灵活的操作内存,比如让你把一个缓冲区的某个地方按整数输出,没有指针很难做,一堆位移,你喜欢吗?
2015-4-20 23:16
0
雪    币: 246
活跃值: (264)
能力值: ( 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;
}
2015-4-20 23:44
0
雪    币: 290
活跃值: (41)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
36
王爽的汇编->11頁
在汇编这门课中,我们所面对的是内存地址空间

指针面对的是内存地址空间

char a[10];
char *p=a;
那你能把显存B8000h设给 a[] 吗?
a[]=&0xB8000 ------??????
2015-4-21 01:18
0
雪    币: 70
活跃值: (37)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
37
比如链表,或者HOOK,需要写一些内存
2015-4-21 08:41
0
雪    币: 44
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
肯定需要指针啥,这关系的编译器的优化等等,比如说函数指针,可以隐藏函数,如果不动态调试,想破解你程序的人根本就不知道调用了那个函数
2015-4-25 10:47
0
游客
登录 | 注册 方可回帖
返回
//