[問題] 指標 ++p & p++ 結果不如預期
題目:
int a[5]={1,2,3,4,5};
int *p=a;
*(p++)+=123;
*(++p)+=123;
請問a陣列的每個值為何?
自己打的程式碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5]={1,2,3,4,5};
int *p=a;
printf( "a[0]的位置%p\n",&a[0]);
printf( "a[1]的位置%p\n",&a[1]);
printf( "a[2]的位置%p\n",&a[2]);
printf( "a[3]的位置%p\n",&a[3]);
printf( "a[4]的位置%p\n",&a[4]);
printf( "p=%p\n",p);
printf( "*p=%d\n",*p);
printf("===========================================\n");
*(p++)+=123;
printf( "p=%p\n",p);
printf( "*p=%d\n",*p);
printf( "a[0]的值為%d \n",a[0]);
printf( "a[1]的值為%d \n",a[1]);
printf( "a[2]的值為%d\n",a[2]);
printf( "a[3]的值為%d\n",a[3]);
printf( "a[4]的值為%d\n",a[4]);
printf("===========================================\n");
*(++p)+=123;
printf( "p=%p\n",p);
printf( "*p=%d\n",*p);
printf( "a[0]的值為%d\n",a[0]);
printf( "a[1]的值為%d\n",a[1]);
printf( "a[2]的值為%d\n",a[2]);
printf( "a[3]的值為%d\n",a[3]);
printf( "a[4]的值為%d\n",a[4]);
system("pause");
return 0;
}
結果:http://imgur.com/7N86Gal
我的疑問: 為什麼結果a[0]會加123, 而不是a[1]加123 ?
我以為結果應該是a[5]={1,125,126,4,5} 卻錯了
想不通為什麼,有人可以幫我解釋一下嗎
謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.253.113.160
推
05/10 18:21, , 1F
05/10 18:21, 1F
→
05/10 18:23, , 2F
05/10 18:23, 2F
→
05/10 18:35, , 3F
05/10 18:35, 3F
推
05/10 18:43, , 4F
05/10 18:43, 4F
→
05/10 18:44, , 5F
05/10 18:44, 5F
推
05/10 18:45, , 6F
05/10 18:45, 6F
→
05/10 18:46, , 7F
05/10 18:46, 7F
→
05/10 18:58, , 8F
05/10 18:58, 8F
→
05/10 20:23, , 9F
05/10 20:23, 9F
→
05/10 20:24, , 10F
05/10 20:24, 10F
→
05/10 20:25, , 11F
05/10 20:25, 11F
→
05/10 20:25, , 12F
05/10 20:25, 12F
→
05/10 20:26, , 13F
05/10 20:26, 13F
推
05/10 22:28, , 14F
05/10 22:28, 14F
→
05/10 22:42, , 15F
05/10 22:42, 15F
→
05/10 22:42, , 16F
05/10 22:42, 16F
推
05/10 22:59, , 17F
05/10 22:59, 17F
推
05/10 23:09, , 18F
05/10 23:09, 18F
→
05/10 23:22, , 19F
05/10 23:22, 19F
→
05/10 23:37, , 20F
05/10 23:37, 20F
推
05/11 17:30, , 21F
05/11 17:30, 21F
→
05/11 18:59, , 22F
05/11 18:59, 22F
推
05/12 09:41, , 23F
05/12 09:41, 23F
→
05/12 12:40, , 24F
05/12 12:40, 24F
→
05/13 01:41, , 25F
05/13 01:41, 25F
→
05/17 22:41, , 26F
05/17 22:41, 26F