为了账号安全,请及时绑定邮箱和手机立即绑定

指针和数组

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

#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]

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

正在回答

6 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#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://img1.sycdn.imooc.com//560e7acb0001d91c06770442.jpg

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

p是存放的内存地址;

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Linux C语言指针与内存
  • 参与学习       116432    人
  • 解答问题       250    个

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

进入课程

指针和数组

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信