|
![]() | 作者: none [onizuka]
![]() |
登录 |
在C的数组中,例: char name[10]="onizuka"; char *ptr,*p; ptr=&name; p=&ptr; 这时,ptr and p指向的地址是相同的 |
地主 发表时间: 04/17 14:45 |
![]() | 回复: sbbfwt [sbbfwt] ![]() |
登录 |
p应该是指向了存放ptr的地址了吧,*p=ptr 我也很菜,不知是不是这样。:) |
B1层 发表时间: 04/17 16:33 |
![]() | 回复: xuehu [xuehu] ![]() |
登录 |
我认为ptr与p指向是同一地址。 |
B2层 发表时间: 04/18 13:17 |
![]() | 回复: god__devil [god__devil] ![]() |
登录 |
错了,指针不是这样用的,根本就不能用一个一级指针去指另一个一级指针 |
B3层 发表时间: 04/18 22:44 |
![]() | 回复: dizi0774 [dizi0774] ![]() |
登录 |
*p应该是ptr的地址。*ptr保存的是name数组首地址的地址。好难理解哦。如果是 char name[10]="onizuka"; char *ptr,**p; ptr=name; *p=ptr; 那就好看多了。 |
B4层 发表时间: 04/19 17:18 |
![]() | 回复: aaron [aaron] ![]() |
登录 |
如果用p=ptr的话 p,ptr,name的地址就是一样的 现在的p指向的是ptr的地址 |
B5层 发表时间: 04/28 21:20 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
这个程序是对的啊?!! 这应该是一道多级指针的应用才对啊。 怎么是一级指向一级呢? 应该是迪仔0774说的那样才有对呀~~~~ |
B6层 发表时间: 04/29 13:08 |
![]() | 回复: zzzzhb [zzzzhb] ![]() |
登录 |
char name[10]="onizuka"; char *ptr,*p; ptr=&name; p=&ptr; 在这里,ptr=&name相当于*prt=name.prt指向name p=&ptr,就是把prt指针所在的地址放到p中,而不是把prt内的地址数据传递给p.所以p指向prt |
B7层 发表时间: 05/03 21:51 |
![]() | 回复: god__devil [god__devil] ![]() |
登录 |
还是错的 应该是char name[10]="onizuka"; char *ptr,**p; ptr=name; p=&ptr; 何必要用二级指针了?真不知道你们为什么的! |
B8层 发表时间: 05/04 18:38 |
![]() | 回复: xjy1234 [xjy1234] ![]() |
登录 |
我的妈啊,这是什么啊! |
B9层 发表时间: 06/08 05:19 |
![]() | 回复: 山鸡 [duck_chen] ![]() |
登录 |
首先这样写,在语法上没有错误,但是,p与ptr指向的地址却截然不同. 首先你必须明白指针既是地址,只不过是一种可变化的地址,可以对它赋值. (因此地址可以说是一种常地址,就跟常量一样,指针就是可变化的,变地址,跟变量一样,可以把常值赋给它.这是我的理解.) name本来就是一个地址,其值由计算机确定.我们不必去关心. 然后你还在name前面加了一个地址运算符,意思就是取存放name这个地址值的那个地址,这样就有点二维指针的意思了。我们暂时把它叫做二维地址吧,因为它的值虽然由计算机自动分配,但是自动并不表示是可随意变化的,一旦定下来就不变了,直到释放了这个空间为止.因此它是个地址,不能叫做指针. 你把这个二维地址赋给了一个一维指针:ptr=&name; 因此ptr是一个二维地址. 而:p=&ptr;则是把存放ptr指针的地址给了p,而不是把ptr指向的内容的地址给了p.我确实不知道你这个程序是什么意思. |
B10层 发表时间: 06/08 12:39 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
在C的数组中,例: 1: char name[10]="onizuka"; 2: char *ptr,*p; 3: ptr=&name; 4: p=&ptr; 这时,ptr and p指向的地址是相同的 --------------------------------- emm...... 在第一行中生成 name 数组,其地址暂定为 name.add 在第二行中生成 ptr, p 两个指针,其地址暂定为 ptr.add, p.add 上两行中 name.add ptr.add p.add 都是不可测的,随机型的变化,所载入进程的变化及操作系统的变化而变化 在第三行 *ptr -> name.add,ptr.add并不改变 在第四行 *p -> ptr.add, p.add并不改变 由此看来,*ptr = *p 的可能性有,但在实际中这种可能性几乎不存在,是否相等完全取决于。。。。天意。。。 在一般的编译器中 *p = p,*ptr = ptr,但并不是全部,所以最好用严谨的表示方法 |
B11层 发表时间: 06/08 15:18 |
![]() | 回复: yjfwindows [yjfwindows] ![]() |
登录 |
老大。应该是p=name吧。 而不是p=&name 这样的话。它的指向是地址。没有用。。。。 因为name是数组。 |
B12层 发表时间: 06/08 17:46 |
![]() | 回复: lovehack [lovehack] ![]() |
登录 |
这个没有错,只是二者指象的地址不同 |
B13层 发表时间: 06/08 20:13 |
![]() | 回复: genius_li [genius_li] ![]() |
登录 |
你真聪明,我很想认识你,我的QQ:83515310。 我也很喜欢编程,我刚想给他发的帖子本来和你的一样,一看你帖子,我就不用发了。 |
B14层 发表时间: 06/16 12:48 |
![]() | 回复: genius_li [genius_li] ![]() |
登录 |
随波逐流,你这个朋友我交定了。 |
B15层 发表时间: 06/16 12:50 |
![]() | 回复: go.go.go [caolifa] ![]() |
登录 |
这里谁是权威,我要听谁的呀.你不可不要误人子弟啊. name各&name有什么区别吗?不都是这个数组的首址吗? 被定义了以后这个地址应该被固定下来吧,直到它被释放为止吧. |
B16层 发表时间: 08/02 10:51 |
![]() | 回复: linda [linda] ![]() |
登录 |
对于指针引用数组,,不能用&name,因为数组名本生就是一个地址, 要引用它的话,可以用*p=name or *p=&name[i] |
B17层 发表时间: 08/02 15:16 |
![]() | 回复: xjy1234 [xjy1234] ![]() |
登录 |
请大家把指针的定义搞清楚,那就一切OK了,多上上机. |
B18层 发表时间: 08/02 21:13 |
![]() | 回复: xiaohan113 [xiaohan113] ![]() |
登录 |
简单一句话!两个指针中的类容不同!但指向的最宗地址,也就是最终结果是一样的~ |
B19层 发表时间: 08/04 21:19 |
![]() | 回复: zkbzgcz [zkbzgcz] ![]() |
登录 |
我认为你说的这些有些问题, 一是。不可以用=&name.而应=name. 二是。不可以这样=&pre.应=pre. |
B20层 发表时间: 08/05 20:52 |
![]() | 回复: drckness [drckness] ![]() |
登录 |
[此贴被 drckness(drckness) 在 8月7日18时40分 编辑过] |
B21层 发表时间: 8/7 18:22 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号