指针和数组

来源:-

慕妹7632611

2015-10-02 18:43

下面的代码怎么在编译器中是有错的

#include <stdio.h>
int main()
{
    int m=1;
    int *p=&m;
    int n=2;
    p+1=&n;
    printf("%d\t%d\n",*p,*(p+1));
    return 0;
}

指针和数组能不能互相替换比如直接在上文printf里写p[0],p[1]

或者直接用p+1代替数组p[1]

如果不可以要怎么声明才行(有时候要用数组有时候要用指针怎么替换)

写回答 关注

4回答

  • 慕妹7632611
    2015-10-04 21:31:33

    好吧 我现在懂了 用p[1]=n;

  • 慕妹7632611
    2015-10-04 20:21:16

    那怎么把数据放到p+1的地址里呢

  • Virture
    2015-10-02 20:44:53

    若有错误或遗漏,请各位同学纠正或补充,多多见谅

  • Virture
    2015-10-02 20:43:48
    #include <stdio.h>
    int main()
    {
        int m = 1;
        int n = 2;
        int *p;
        p = &m;
        printf("%d\n%d\n%d\n%d\n%d\n",*p,*p+1,*(p+1),p,p+1);
        return 0;
    }

    http://img.mukewang.com/560e7acb0001d91c06770442.jpg

    *(p+1)先将指针右移一位,再取所指向变量的值,但是内存无值,给了个随机数;

    p是存放的内存地址;

    p+1是p所存放的内存地址再加4个字节,就从12变16了。一个整型占4个字节。

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116533 学习 · 250 问题

查看课程

相似问题