指針和數組
下面的代碼怎么在編譯器中是有錯的
#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]
如果不可以要怎么聲明才行(有時候要用數組有時候要用指針怎么替換)
下面的代碼怎么在編譯器中是有錯的
#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]
如果不可以要怎么聲明才行(有時候要用數組有時候要用指針怎么替換)
2015-10-02
舉報
2015-10-04
好吧 我現在懂了 用p[1]=n;
2015-10-04
那怎么把數據放到p+1的地址里呢
2015-10-02
若有錯誤或遺漏,請各位同學糾正或補充,多多見諒
2015-10-02
#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個字節。