| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:关于指针移动及首地址的问题。我表示很混乱。。。睡觉之前发一帖,明天醒来 ...
只看楼主 加入收藏
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:7 
关于指针移动及首地址的问题。我表示很混乱。。。睡觉之前发一帖,明天醒来长一智。
例如,数组a[]={1,2,3,4,5,6,7},*p,**k
哪位大神帮忙解释一下指针变量的操作与移动。
*p=a[],*p=a,p=&a[],**p,*p++,k=&p,(*p)++,++*p,这些分别指向那个存储单元
 还有没想到的,请大侠帮忙补充。
练习题有很多这个,搞得我都糊涂了。。球大侠帮忙指点。
搜索更多相关主题的帖子: 练习题 
2012-11-17 00:01
ch307458491
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2012-10-4
收藏
得分:3 
我们也上到指针  悲剧啊
2012-11-17 00:11
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 2楼 ch307458491
呵呵,我自学呢。。。有时候这个喜欢弄糊涂,请大神帮忙整理一下,自己整理怕问题多,搞不清楚。
2012-11-17 00:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
这是我上机测试的结果,仅供参考:
程序代码:
#include<stdio.h>
int main()
{
    int a[]={11,21,23,42,35,67,79};
    int *p;
    int **k;
    //*p=a[];  这句代码无法编译通过
    //*p=a;  这句代码无法编译通过
    //p=&a[]; 这句代码无法编译通过
    //**p;   这句代码无法编译通过
     p=a;
    printf("这个应该是指向数组的指针,输出应该是a[0]=11 =%d\n",*p);
    *p++;
    printf("这个应该是移动数组指针,输出应该是a[1]=21   =%d\n",*p);
    k=&p;
    printf("这个应该是指针p在内存中的地址,输出是   =%X\n",k);
    (*p)++;
    printf("这个应该是数组指针指向的数值自增1,输出应该是a[1]+1=21+1   =%d\n",*p);
    ++*p;
    printf("这个应该是数组指针自增1后再把指向的数值自增1,输出应该是a[2]+1=23+1   =%d\n",*p);
    return 0;
}


DO IT YOURSELF !
2012-11-17 07:35
轮椅之星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-8-16
收藏
得分:3 
回复 楼主 Mirob
看看  C语言深度剖析  这本书, 上面的讲解很详细
2012-11-17 08:51
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 5楼 轮椅之星
没这个书,有电子版??现在正糊涂呢。。
2012-11-17 15:57
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 4楼 wp231957
我再看看。。。。
2012-11-17 15:59
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:3 
嘻嘻,我也自学的,学完指针了,来装装大虾

*p=a  //把a的首地址(也就是值1)赋予指针p
k=&p  //把指针p的地址赋予指向指针的指针k(这个听起来可能有点绕...每个指针都有自己的一个储存地址*k就声明了k是一个指针,而**k就声明它是一个指向指针的指针,如果理解不了可以先这么理解)
**p代表指针指向的值的地址(好吧至少我是这么理解的...)
(*p)++  //*p先访问了指针p指向的地址中的值,然后再递增它(指向的值)
++*p  //因为用的是前置递增,所以先把地址向前移1(这个是否为1视类型而定,如类型为int的话会递增4,不过这是计算机的事了...)然后再访问地址中的值

其他的都大同小异了,我认为其实没必要做那么多练习题,
主要是理解相关的用法及其意义就行了,
只要多上机这些东西自然而然的就记住了
当然啦,个人意见而已...

I have not failed completely
2012-11-17 16:31
快速回复:关于指针移动及首地址的问题。我表示很混乱。。。睡觉之前发一帖,明天 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013052 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved