慕妹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]
如果不可以要怎么声明才行(有时候要用数组有时候要用指针怎么替换)
好吧 我现在懂了 用p[1]=n;
那怎么把数据放到p+1的地址里呢
若有错误或遗漏,请各位同学纠正或补充,多多见谅
#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; }
*(p+1)先将指针右移一位,再取所指向变量的值,但是内存无值,给了个随机数;
p是存放的内存地址;
p+1是p所存放的内存地址再加4个字节,就从12变16了。一个整型占4个字节。
Linux C语言指针与内存
116533 学习 · 250 问题
相似问题