c 指针运算问题?修改
一、代码:
int a[]={1,2,3,4,5};
int *p;
p=a;
*(p++)=10;
int i;
for (i=0; i<sizeof(a)/sizeof(int); i++) {
printf("a[%d]=%d\n",i,a[i]);
}
输出:
a[0]=10
a[1]=2
a[2]=3
a[3]=4
a[4]=5
二、问题
明明指针往下移了,为什么a[0]=10,而不是a[1]=10?
c 指针运算问题?修改
一、代码:
int a[]={1,2,3,4,5};
int *p;
p=a;
*(p++)=10;
int i;
for (i=0; i<sizeof(a)/sizeof(int); i++) {
printf("a[%d]=%d\n",i,a[i]);
}
输出:
a[0]=10
a[1]=2
a[2]=3
a[3]=4
a[4]=5
二、问题
明明指针往下移了,为什么a[0]=10,而不是a[1]=10?
#include <stdio.h>
int main()
{
int a[]={1,2,3,4,5};
int *p;
p=a;
*(p+1)=10;
p++;
int i;
for (i=0; i<sizeof(a)/sizeof(int); i++) {
printf("a[%d]=%d\n",i,a[i]);
}
}
有个简单的方法便于你理解:你可以依次打印p、p++((p++)取的还是p++这个标量值,或者此处你可以输出&((p++)))、p三者的值,看了结果你就明白了*(p++)内存的地址还是p,之后才变为p+1
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
p++
++
在后等价于
不同于
++p